| [in] | jobz | = 'N': Compute eigenvalues only.
= 'V': Compute eigenvalues and eigenvectors. |
| [in] | n | Number of rows and columns of the matrix. (n >= 0) (If n = 0, returns without computation) |
| [in] | val[] | Array val[lval] (lval >= nnz)
Values of nonzero elements of input matrix (where nnz is the number of nonzero elements). |
| [in] | ptr[] | Array ptr[lptr] (lptr >= n + 1)
Column pointers (if CSC) or row pointers (if CSR) of input matrix. |
| [in] | ind[] | Array ind[lind] (lind >= nnz)
Row indices (if CSC) or column indices (if CSR) of input matrix (where nnz is the number of nonzero elements). |
| [in] | base | Indexing of ptr[] and ind[].
= 0: Zero-based (C style) indexing: Starting index is 0.
= 1: One-based (Fortran style) indexing: Starting index is 1. |
| [in] | format | Sparse matrix format.
= 0: CSR format.
= 1: CSC format. |
| [in] | sigma | Shift σ in shift and invert mode (OP = (A - σ*I)^(-1), B = I). |
| [out] | d[] | Array d[ld] (ld >= nev)
Contains the Ritz value approximations to the eigenvalues of A*z = λ*z. |
| [in] | ldz | Leading dimension of the array z. (ldz >= n if Ritz vectors are desired, ldz >= 1 otherwise) |
| [out] | z[] | Array z[ldz * lz] (lz >= nev)
Contains the Ritz vectors (approximations to the eigenvectors) of the eigensystem A*z = λ*z corresponding to the Ritz value approximations.
If jobz = 'N' then z[] is not referenced. |
| [in] | which | The eigenvalues of OP = (A - σ*I)^(-1) are found as follows.
= "LM": Compute the nev eigenvalues of largest magnitude.
= "SM": Compute the nev eigenvalues of smallest magnitude.
= "LR": Compute the nev eigenvalues of largest real part.
= "SR": Compute the nev eigenvalues of smallest real part.
= "LI": Compute the nev eigenvalues of largest imaginary part.
= "SI": Compute the nev eigenvalues of smallest imaginary part. |
| [in] | nev | Number of eigenvalues to be computed. (0 < nev < n) |
| [in] | tol | Stopping criterion: the acceptable relative accuracy of the Ritz value. If tol <= 0, machine precision is assumed. |
| [out] | resid[] | Array resid[lresid] (lresid >= n)
The residual vector. |
| [in] | ncv | Number of columns of the matrix V. (nev < ncv <= n)
This will indicate how many Arnoldi vectors are generated at each iteration (ncv >= 2*nev is recommended). |
| [in] | ldv | Leading dimension of the array v. (ldv >= n) |
| [out] | v[] | Array v[ldv * lv] (lv >= ncv)
Matrix V containing ncv Arnoldi basis vectors. |
| [in] | maxiter | Maximum number of Arnoldi update iterations allowed. |
| [out] | workd[] | Array workd[lworkd] (lworkd >= 3*n)
Distributed work array used for reverse communication. |
| [out] | workl[] | Array workl[lworkl]
Local work array. |
| [in] | lworkl | Size of array workl[]. (lworkl >= 3*ncv^2 + 5*ncv) |
| [out] | workev[] | Array workev[lworkev] (lworkev >= 2*ncv)
Double work array. |
| [out] | rwork[] | Array rwork[lrwork] (lrwork >= ncv)
Private (replicated) work array. |
| [out] | iwork[] | Array iwork[liwork] (liwork >= max(ncv, 3))
Integer work array.
The following values are returned in iwork[0], ..., iwork[2].
iwork[0]: Number of Arnoldi update iterations taken.
iwork[1]: Number of Ritz values that satisfy the convergence criterion (nconv).
iwork[2]: Total number of OP*x operations (numop). |
| [out] | info | Return code.
= 0: Successful exit.
< 0: The (-info)-th argument is invalid.
= 1: Maximum number of iterations taken. iparam[4] returns the number of converged Ritz values.
= 3: No shifts could be applied during a cycle of the implicitly restarted Arnoldi iteration. A possible remedy is to increase ncv relative to nev (ncv >= 2*nev is recommended).
= 11: Initial residual vector is zero.
= 12: Failed to build an Arnoldi factorization.
= 13: Error return from LAPACK eigenvalue calculation.
= 14: znaupd did not find any eigenvalues to sufficient accuracy.
= 15 to 19: Internal code error. |