Confirmed and Corrected by Julie on May 21st 2012
====================================
EMAIL:
We would like to report a bug in {S,D}SYEVR and {C,Z}HEEVR routines. This bug causes writing two different data in the same address in IWORK, potentially producing wrong answers.
The bug description is provided in the bottom of the email. Please let us know, if you have any questions.
Thank you,
Line 543 in {S,D}SYEVR:
Line 717 on {C,Z}HEEVR:
=== Code Starts here==
INDISP = INDIBL + N
* IWORK(INDIFL:INDIFL+N-1) stores the indices of eigenvectors
* that corresponding to eigenvectors that fail to converge in
* DSTEIN. This information is discarded; if any fail, the driver
* returns INFO > 0.
INDIFL = INDISP + N
* INDIWO is the offset of the remaining integer workspace.
INDIWO = INDISP + N <- -- It is suspicious.
=====End of the Code=========
I think this should be INDIWO = INDIFL+N. Otherwise, subsequent {S,D}STEIN call takes the same address for IWORK(INDIWO) and INWROK(INDIFL).
CALL DSTEIN( N, WORK( INDD ), WORK( INDE ), M, W,
$ IWORK( INDIBL ), IWORK( INDISP ), Z, LDZ,
$ WORK( INDWK ), IWORK( INDIWO ), IWORK( INDIFL ),
$ INFO )
====================================
* returns INFO > 0.
INDIFL = INDISP + N
* INDIWO is the offset of the remaining integer workspace.
- INDIWO = INDISP + N
+ INDIWO = INDIFL + N
*
* Call CHETRD to reduce Hermitian matrix to tridiagonal form.
* returns INFO > 0.
INDIFL = INDISP + N
* INDIWO is the offset of the remaining integer workspace.
- INDIWO = INDISP + N
+ INDIWO = INDIFL + N
*
* Call DSYTRD to reduce symmetric matrix to tridiagonal form.
* returns INFO > 0.
INDIFL = INDISP + N
* INDIWO is the offset of the remaining integer workspace.
- INDIWO = INDISP + N
+ INDIWO = INDIFL + N
*
* Call SSYTRD to reduce symmetric matrix to tridiagonal form.
* returns INFO > 0.
INDIFL = INDISP + N
* INDIWO is the offset of the remaining integer workspace.
- INDIWO = INDISP + N
+ INDIWO = INDIFL + N
*
* Call ZHETRD to reduce Hermitian matrix to tridiagonal form.