ISUPPZ value in LAPACK DSYEVR

I want to calculate my own system to some big real symmetric matrices and find a DSYEVR routine that should suit my needs.

dsyevr (JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, ISUPPZ, WORK, LWORK, IWORK, LIWORK, INFO)

      

While enabling and testing this subroutine, I noticed a parameter isuppz

, which is an integer array of length 2*m

, where it m

indicates the number of eigenvalues โ€‹โ€‹calculated (which can vary depending on the input).

According to the documentation, an array isuppz

defines the position of non-zero elements in an array of eigenvectors z

. That is, in particular, i

the eigenvector has nonzero elements between the positions isuppz(2*i-1)

and isuppz(2*i)

.

Now I have a problem that this does not match my observations. For example. when calculating its own system to an exemplary size system, the N=400

second eigenvector has, according to isuppz

, only nonzero elements between the positions 349

and 400

. Looking at the eigenvector, I see that this is clearly not the case, and comparing with Mathematica

, I clearly see that it should not be either.

Actually, its own system DSYEVR

is basically the same as the original system designed for Mathematica

. As a result, I am assuming there is nothing wrong overall.

So what is the actual meaning of the parameter isuppz

?

+3


source to share





All Articles