org.netlib.arpack
Class Ssapps
java.lang.Object
org.netlib.arpack.Ssapps
public class Ssapps
- extends java.lang.Object
Following is the description from the original
Fortran source. For each array argument, the Java
version will include an integer offset parameter, so
the arguments may not match the description exactly.
Contact seymour@cs.utk.edu with any questions.
*-----------------------------------------------------------------------
\BeginDoc
\Name: ssapps
\Description:
Given the Arnoldi factorization
A*V_{k} - V_{k}*H_{k} = r_{k+p}*e_{k+p}^T,
apply NP shifts implicitly resulting in
A*(V_{k}*Q) - (V_{k}*Q)*(Q^T* H_{k}*Q) = r_{k+p}*e_{k+p}^T * Q
where Q is an orthogonal matrix of order KEV+NP. Q is the product of
rotations resulting from the NP bulge chasing sweeps. The updated Arnoldi
factorization becomes:
A*VNEW_{k} - VNEW_{k}*HNEW_{k} = rnew_{k}*e_{k}^T.
\Usage:
call ssapps
( N, KEV, NP, SHIFT, V, LDV, H, LDH, RESID, Q, LDQ, WORKD )
\Arguments
N Integer. (INPUT)
Problem size, i.e. dimension of matrix A.
KEV Integer. (INPUT)
INPUT: KEV+NP is the size of the input matrix H.
OUTPUT: KEV is the size of the updated matrix HNEW.
NP Integer. (INPUT)
Number of implicit shifts to be applied.
SHIFT Real array of length NP. (INPUT)
The shifts to be applied.
V Real N by (KEV+NP) array. (INPUT/OUTPUT)
INPUT: V contains the current KEV+NP Arnoldi vectors.
OUTPUT: VNEW = V(1:n,1:KEV); the updated Arnoldi vectors
are in the first KEV columns of V.
LDV Integer. (INPUT)
Leading dimension of V exactly as declared in the calling
program.
H Real (KEV+NP) by 2 array. (INPUT/OUTPUT)
INPUT: H contains the symmetric tridiagonal matrix of the
Arnoldi factorization with the subdiagonal in the 1st column
starting at H(2,1) and the main diagonal in the 2nd column.
OUTPUT: H contains the updated tridiagonal matrix in the
KEV leading submatrix.
LDH Integer. (INPUT)
Leading dimension of H exactly as declared in the calling
program.
RESID Real array of length (N). (INPUT/OUTPUT)
INPUT: RESID contains the the residual vector r_{k+p}.
OUTPUT: RESID is the updated residual vector rnew_{k}.
Q Real KEV+NP by KEV+NP work array. (WORKSPACE)
Work array used to accumulate the rotations during the bulge
chase sweep.
LDQ Integer. (INPUT)
Leading dimension of Q exactly as declared in the calling
program.
WORKD Real work array of length 2*N. (WORKSPACE)
Distributed array used in the application of the accumulated
orthogonal matrix Q.
\EndDoc
-----------------------------------------------------------------------
\BeginLib
\Local variables:
xxxxxx real
\References:
1. D.C. Sorensen, "Implicit Application of Polynomial Filters in
a k-Step Arnoldi Method", SIAM J. Matr. Anal. Apps., 13 (1992),
pp 357-385.
2. R.B. Lehoucq, "Analysis and Implementation of an Implicitly
Restarted Arnoldi Iteration", Rice University Technical Report
TR95-13, Department of Computational and Applied Mathematics.
\Routines called:
ivout ARPACK utility routine that prints integers.
second ARPACK utility routine for timing.
svout ARPACK utility routine that prints vectors.
slamch LAPACK routine that determines machine constants.
slartg LAPACK Givens rotation construction routine.
slacpy LAPACK matrix copy routine.
slaset LAPACK matrix initialization routine.
sgemv Level 2 BLAS routine for matrix vector multiplication.
saxpy Level 1 BLAS that computes a vector triad.
scopy Level 1 BLAS that copies one vector to another.
sscal Level 1 BLAS that scales a vector.
\Author
Danny Sorensen Phuong Vu
Richard Lehoucq CRPC / Rice University
Dept. of Computational & Houston, Texas
Applied Mathematics
Rice University
Houston, Texas
\Revision history:
12/16/93: Version ' 2.4'
\SCCS Information: @(#)
FILE: sapps.F SID: 2.6 DATE OF SID: 3/28/97 RELEASE: 2
\Remarks
1. In this version, each shift is applied to all the subblocks of
the tridiagonal matrix H and not just to the submatrix that it
comes from. This routine assumes that the subdiagonal elements
of H that are stored in h(1:kev+np,1) are nonegative upon input
and enforce this condition upon output. This version incorporates
deflation. See code for documentation.
\EndLib
-----------------------------------------------------------------------
Field Summary |
static float |
epsmch
|
static boolean |
first
|
static org.netlib.util.floatW |
t0
|
static org.netlib.util.floatW |
t1
|
static float |
t2
|
static float |
t3
|
static float |
t4
|
static float |
t5
|
Method Summary |
static void |
ssapps(int n,
int kev,
int np,
float[] shift,
int _shift_offset,
float[] v,
int _v_offset,
int ldv,
float[] h,
int _h_offset,
int ldh,
float[] resid,
int _resid_offset,
float[] q,
int _q_offset,
int ldq,
float[] workd,
int _workd_offset)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
t0
public static org.netlib.util.floatW t0
t1
public static org.netlib.util.floatW t1
t2
public static float t2
t3
public static float t3
t4
public static float t4
t5
public static float t5
epsmch
public static float epsmch
first
public static boolean first
Ssapps
public Ssapps()
ssapps
public static void ssapps(int n,
int kev,
int np,
float[] shift,
int _shift_offset,
float[] v,
int _v_offset,
int ldv,
float[] h,
int _h_offset,
int ldh,
float[] resid,
int _resid_offset,
float[] q,
int _q_offset,
int ldq,
float[] workd,
int _workd_offset)