Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 7 additions & 10 deletions SRC/chbevx.f
Original file line number Diff line number Diff line change
Expand Up @@ -296,7 +296,7 @@ SUBROUTINE CHBEVX( JOBZ, RANGE, UPLO, N, KD, AB, LDAB, Q, LDQ,
* .. Local Scalars ..
LOGICAL ALLEIG, INDEIG, LOWER, TEST, VALEIG, WANTZ
CHARACTER ORDER
INTEGER I, IINFO, IMAX, INDD, INDE, INDEE, INDIBL,
INTEGER I, IINFO, INDD, INDE, INDEE, INDIBL,
$ INDISP, INDIWK, INDRWK, INDWRK, ISCALE, ITMP1,
$ J, JJ, NSPLIT
REAL ABSTLL, ANRM, BIGNUM, EPS, RMAX, RMIN, SAFMIN,
Expand Down Expand Up @@ -415,8 +415,11 @@ SUBROUTINE CHBEVX( JOBZ, RANGE, UPLO, N, KD, AB, LDAB, Q, LDQ,
ISCALE = 1
SIGMA = RMIN / ANRM
ELSE IF( ANRM.GT.RMAX ) THEN
ISCALE = 1
* An infinite norm gives SIGMA = 0; leave such a matrix
* unscaled so that VL and VU remain a valid interval.
SIGMA = RMAX / ANRM
IF( SIGMA.GT.ZERO )
$ ISCALE = 1
END IF
IF( ISCALE.EQ.1 ) THEN
IF( LOWER ) THEN
Expand Down Expand Up @@ -517,14 +520,8 @@ SUBROUTINE CHBEVX( JOBZ, RANGE, UPLO, N, KD, AB, LDAB, Q, LDQ,
* If matrix was scaled, then rescale eigenvalues appropriately.
*
30 CONTINUE
IF( ISCALE.EQ.1 ) THEN
IF( INFO.EQ.0 ) THEN
IMAX = M
ELSE
IMAX = INFO - 1
END IF
CALL SSCAL( IMAX, ONE / SIGMA, W, 1 )
END IF
IF( ISCALE.EQ.1 )
$ CALL SSCAL( M, ONE / SIGMA, W, 1 )
*
* If eigenvalues are not in order, then sort them, along with
* eigenvectors.
Expand Down
17 changes: 7 additions & 10 deletions SRC/chbevx_2stage.f
Original file line number Diff line number Diff line change
Expand Up @@ -357,7 +357,7 @@ SUBROUTINE CHBEVX_2STAGE( JOBZ, RANGE, UPLO, N, KD, AB, LDAB,
LOGICAL ALLEIG, INDEIG, LOWER, TEST, VALEIG, WANTZ,
$ LQUERY
CHARACTER ORDER
INTEGER I, IINFO, IMAX, INDD, INDE, INDEE, INDIBL,
INTEGER I, IINFO, INDD, INDE, INDEE, INDIBL,
$ INDISP, INDIWK, INDRWK, INDWRK, ISCALE, ITMP1,
$ LLWORK, LWMIN, LHTRD, LWTRD, IB, INDHOUS,
$ J, JJ, NSPLIT
Expand Down Expand Up @@ -501,8 +501,11 @@ SUBROUTINE CHBEVX_2STAGE( JOBZ, RANGE, UPLO, N, KD, AB, LDAB,
ISCALE = 1
SIGMA = RMIN / ANRM
ELSE IF( ANRM.GT.RMAX ) THEN
ISCALE = 1
* An infinite norm gives SIGMA = 0; leave such a matrix
* unscaled so that VL and VU remain a valid interval.
SIGMA = RMAX / ANRM
IF( SIGMA.GT.ZERO )
$ ISCALE = 1
END IF
IF( ISCALE.EQ.1 ) THEN
IF( LOWER ) THEN
Expand Down Expand Up @@ -608,14 +611,8 @@ SUBROUTINE CHBEVX_2STAGE( JOBZ, RANGE, UPLO, N, KD, AB, LDAB,
* If matrix was scaled, then rescale eigenvalues appropriately.
*
30 CONTINUE
IF( ISCALE.EQ.1 ) THEN
IF( INFO.EQ.0 ) THEN
IMAX = M
ELSE
IMAX = INFO - 1
END IF
CALL SSCAL( IMAX, ONE / SIGMA, W, 1 )
END IF
IF( ISCALE.EQ.1 )
$ CALL SSCAL( M, ONE / SIGMA, W, 1 )
*
* If eigenvalues are not in order, then sort them, along with
* eigenvectors.
Expand Down
17 changes: 7 additions & 10 deletions SRC/cheevr.f
Original file line number Diff line number Diff line change
Expand Up @@ -398,7 +398,7 @@ SUBROUTINE CHEEVR( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL,
LOGICAL ALLEIG, INDEIG, LOWER, LQUERY, TEST, VALEIG,
$ WANTZ, TRYRAC
CHARACTER ORDER
INTEGER I, IEEEOK, IINFO, IMAX, INDIBL, INDIFL, INDISP,
INTEGER I, IEEEOK, IINFO, INDIBL, INDIFL, INDISP,
$ INDIWO, INDRD, INDRDD, INDRE, INDREE, INDRWK,
$ INDTAU, INDWK, INDWKN, ISCALE, ITMP1, J, JJ,
$ LIWMIN, LLWORK, LLRWORK, LLWRKN, LRWMIN,
Expand Down Expand Up @@ -549,8 +549,11 @@ SUBROUTINE CHEEVR( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL,
ISCALE = 1
SIGMA = RMIN / ANRM
ELSE IF( ANRM.GT.RMAX ) THEN
ISCALE = 1
* An infinite norm gives SIGMA = 0; leave such a matrix
* unscaled so that VL and VU remain a valid interval.
SIGMA = RMAX / ANRM
IF( SIGMA.GT.ZERO )
$ ISCALE = 1
END IF
IF( ISCALE.EQ.1 ) THEN
IF( LOWER ) THEN
Expand Down Expand Up @@ -700,14 +703,8 @@ SUBROUTINE CHEEVR( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL,
* If matrix was scaled, then rescale eigenvalues appropriately.
*
30 CONTINUE
IF( ISCALE.EQ.1 ) THEN
IF( INFO.EQ.0 ) THEN
IMAX = M
ELSE
IMAX = INFO - 1
END IF
CALL SSCAL( IMAX, ONE / SIGMA, W, 1 )
END IF
IF( ISCALE.EQ.1 )
$ CALL SSCAL( M, ONE / SIGMA, W, 1 )
*
* If eigenvalues are not in order, then sort them, along with
* eigenvectors.
Expand Down
17 changes: 7 additions & 10 deletions SRC/cheevr_2stage.f
Original file line number Diff line number Diff line change
Expand Up @@ -433,7 +433,7 @@ SUBROUTINE CHEEVR_2STAGE( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU,
LOGICAL ALLEIG, INDEIG, LOWER, LQUERY, TEST, VALEIG,
$ WANTZ, TRYRAC
CHARACTER ORDER
INTEGER I, IEEEOK, IINFO, IMAX, INDIBL, INDIFL, INDISP,
INTEGER I, IEEEOK, IINFO, INDIBL, INDIFL, INDISP,
$ INDIWO, INDRD, INDRDD, INDRE, INDREE, INDRWK,
$ INDTAU, INDWK, INDWKN, ISCALE, ITMP1, J, JJ,
$ LIWMIN, LLWORK, LLRWORK, LLWRKN, LRWMIN,
Expand Down Expand Up @@ -590,8 +590,11 @@ SUBROUTINE CHEEVR_2STAGE( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU,
ISCALE = 1
SIGMA = RMIN / ANRM
ELSE IF( ANRM.GT.RMAX ) THEN
ISCALE = 1
* An infinite norm gives SIGMA = 0; leave such a matrix
* unscaled so that VL and VU remain a valid interval.
SIGMA = RMAX / ANRM
IF( SIGMA.GT.ZERO )
$ ISCALE = 1
END IF
IF( ISCALE.EQ.1 ) THEN
IF( LOWER ) THEN
Expand Down Expand Up @@ -744,14 +747,8 @@ SUBROUTINE CHEEVR_2STAGE( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU,
* If matrix was scaled, then rescale eigenvalues appropriately.
*
30 CONTINUE
IF( ISCALE.EQ.1 ) THEN
IF( INFO.EQ.0 ) THEN
IMAX = M
ELSE
IMAX = INFO - 1
END IF
CALL SSCAL( IMAX, ONE / SIGMA, W, 1 )
END IF
IF( ISCALE.EQ.1 )
$ CALL SSCAL( M, ONE / SIGMA, W, 1 )
*
* If eigenvalues are not in order, then sort them, along with
* eigenvectors.
Expand Down
17 changes: 7 additions & 10 deletions SRC/cheevx.f
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ SUBROUTINE CHEEVX( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL,
LOGICAL ALLEIG, INDEIG, LOWER, LQUERY, TEST, VALEIG,
$ WANTZ
CHARACTER ORDER
INTEGER I, IINFO, IMAX, INDD, INDE, INDEE, INDIBL,
INTEGER I, IINFO, INDD, INDE, INDEE, INDIBL,
$ INDISP, INDIWK, INDRWK, INDTAU, INDWRK, ISCALE,
$ ITMP1, J, JJ, LLWORK, LWKMIN, LWKOPT, NB,
$ NSPLIT
Expand Down Expand Up @@ -419,8 +419,11 @@ SUBROUTINE CHEEVX( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL,
ISCALE = 1
SIGMA = RMIN / ANRM
ELSE IF( ANRM.GT.RMAX ) THEN
ISCALE = 1
* An infinite norm gives SIGMA = 0; leave such a matrix
* unscaled so that VL and VU remain a valid interval.
SIGMA = RMAX / ANRM
IF( SIGMA.GT.ZERO )
$ ISCALE = 1
END IF
IF( ISCALE.EQ.1 ) THEN
IF( LOWER ) THEN
Expand Down Expand Up @@ -525,14 +528,8 @@ SUBROUTINE CHEEVX( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL,
* If matrix was scaled, then rescale eigenvalues appropriately.
*
40 CONTINUE
IF( ISCALE.EQ.1 ) THEN
IF( INFO.EQ.0 ) THEN
IMAX = M
ELSE
IMAX = INFO - 1
END IF
CALL SSCAL( IMAX, ONE / SIGMA, W, 1 )
END IF
IF( ISCALE.EQ.1 )
$ CALL SSCAL( M, ONE / SIGMA, W, 1 )
*
* If eigenvalues are not in order, then sort them, along with
* eigenvectors.
Expand Down
17 changes: 7 additions & 10 deletions SRC/cheevx_2stage.f
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ SUBROUTINE CHEEVX_2STAGE( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU,
LOGICAL ALLEIG, INDEIG, LOWER, LQUERY, TEST, VALEIG,
$ WANTZ
CHARACTER ORDER
INTEGER I, IINFO, IMAX, INDD, INDE, INDEE, INDIBL,
INTEGER I, IINFO, INDD, INDE, INDEE, INDIBL,
$ INDISP, INDIWK, INDRWK, INDTAU, INDWRK, ISCALE,
$ ITMP1, J, JJ, LLWORK,
$ NSPLIT, LWMIN, LHTRD, LWTRD, KD, IB, INDHOUS
Expand Down Expand Up @@ -470,8 +470,11 @@ SUBROUTINE CHEEVX_2STAGE( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU,
ISCALE = 1
SIGMA = RMIN / ANRM
ELSE IF( ANRM.GT.RMAX ) THEN
ISCALE = 1
* An infinite norm gives SIGMA = 0; leave such a matrix
* unscaled so that VL and VU remain a valid interval.
SIGMA = RMAX / ANRM
IF( SIGMA.GT.ZERO )
$ ISCALE = 1
END IF
IF( ISCALE.EQ.1 ) THEN
IF( LOWER ) THEN
Expand Down Expand Up @@ -580,14 +583,8 @@ SUBROUTINE CHEEVX_2STAGE( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU,
* If matrix was scaled, then rescale eigenvalues appropriately.
*
40 CONTINUE
IF( ISCALE.EQ.1 ) THEN
IF( INFO.EQ.0 ) THEN
IMAX = M
ELSE
IMAX = INFO - 1
END IF
CALL SSCAL( IMAX, ONE / SIGMA, W, 1 )
END IF
IF( ISCALE.EQ.1 )
$ CALL SSCAL( M, ONE / SIGMA, W, 1 )
*
* If eigenvalues are not in order, then sort them, along with
* eigenvectors.
Expand Down
17 changes: 7 additions & 10 deletions SRC/chpevx.f
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ SUBROUTINE CHPEVX( JOBZ, RANGE, UPLO, N, AP, VL, VU, IL, IU,
* .. Local Scalars ..
LOGICAL ALLEIG, INDEIG, TEST, VALEIG, WANTZ
CHARACTER ORDER
INTEGER I, IINFO, IMAX, INDD, INDE, INDEE,
INTEGER I, IINFO, INDD, INDE, INDEE,
$ INDISP, INDIWK, INDRWK, INDTAU, INDWRK, ISCALE,
$ ITMP1, J, JJ, NSPLIT
REAL ABSTLL, ANRM, BIGNUM, EPS, RMAX, RMIN, SAFMIN,
Expand Down Expand Up @@ -373,8 +373,11 @@ SUBROUTINE CHPEVX( JOBZ, RANGE, UPLO, N, AP, VL, VU, IL, IU,
ISCALE = 1
SIGMA = RMIN / ANRM
ELSE IF( ANRM.GT.RMAX ) THEN
ISCALE = 1
* An infinite norm gives SIGMA = 0; leave such a matrix
* unscaled so that VL and VU remain a valid interval.
SIGMA = RMAX / ANRM
IF( SIGMA.GT.ZERO )
$ ISCALE = 1
END IF
IF( ISCALE.EQ.1 ) THEN
CALL CSSCAL( ( N*( N+1 ) ) / 2, SIGMA, AP, 1 )
Expand Down Expand Up @@ -469,14 +472,8 @@ SUBROUTINE CHPEVX( JOBZ, RANGE, UPLO, N, AP, VL, VU, IL, IU,
* If matrix was scaled, then rescale eigenvalues appropriately.
*
20 CONTINUE
IF( ISCALE.EQ.1 ) THEN
IF( INFO.EQ.0 ) THEN
IMAX = M
ELSE
IMAX = INFO - 1
END IF
CALL SSCAL( IMAX, ONE / SIGMA, W, 1 )
END IF
IF( ISCALE.EQ.1 )
$ CALL SSCAL( M, ONE / SIGMA, W, 1 )
*
* If eigenvalues are not in order, then sort them, along with
* eigenvectors.
Expand Down
11 changes: 7 additions & 4 deletions SRC/cstein.f
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,8 @@
*> the first submatrix from the top, =2 if W(i) belongs to
*> the second submatrix, etc. ( The output array IBLOCK
*> from SSTEBZ is expected here. )
*> A negative entry, with which SSTEBZ flags an eigenvalue that
*> did not converge, is treated as its absolute value.
*> \endverbatim
*>
*> \param[in] ISPLIT
Expand Down Expand Up @@ -244,11 +246,12 @@ SUBROUTINE CSTEIN( N, D, E, M, W, IBLOCK, ISPLIT, Z, LDZ, WORK,
INFO = -9
ELSE
DO 20 J = 2, M
IF( IBLOCK( J ).LT.IBLOCK( J-1 ) ) THEN
IF( ABS( IBLOCK( J ) ).LT.ABS( IBLOCK( J-1 ) ) ) THEN
INFO = -6
GO TO 30
END IF
IF( IBLOCK( J ).EQ.IBLOCK( J-1 ) .AND. W( J ).LT.W( J-1 ) )
IF( ABS( IBLOCK( J ) ).EQ.ABS( IBLOCK( J-1 ) ) .AND.
$ W( J ).LT.W( J-1 ) )
$ THEN
INFO = -5
GO TO 30
Expand Down Expand Up @@ -292,7 +295,7 @@ SUBROUTINE CSTEIN( N, D, E, M, W, IBLOCK, ISPLIT, Z, LDZ, WORK,
* Compute eigenvectors of matrix blocks.
*
J1 = 1
DO 180 NBLK = 1, IBLOCK( M )
DO 180 NBLK = 1, ABS( IBLOCK( M ) )
*
* Find starting and ending indices of block nblk.
*
Expand Down Expand Up @@ -324,7 +327,7 @@ SUBROUTINE CSTEIN( N, D, E, M, W, IBLOCK, ISPLIT, Z, LDZ, WORK,
60 CONTINUE
JBLK = 0
DO 170 J = J1, M
IF( IBLOCK( J ).NE.NBLK ) THEN
IF( ABS( IBLOCK( J ) ).NE.NBLK ) THEN
J1 = J
GO TO 180
END IF
Expand Down
17 changes: 7 additions & 10 deletions SRC/dsbevx.f
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,7 @@ SUBROUTINE DSBEVX( JOBZ, RANGE, UPLO, N, KD, AB, LDAB, Q, LDQ,
* .. Local Scalars ..
LOGICAL ALLEIG, INDEIG, LOWER, TEST, VALEIG, WANTZ
CHARACTER ORDER
INTEGER I, IINFO, IMAX, INDD, INDE, INDEE, INDIBL,
INTEGER I, IINFO, INDD, INDE, INDEE, INDIBL,
$ INDISP, INDIWO, INDWRK, ISCALE, ITMP1, J, JJ,
$ NSPLIT
DOUBLE PRECISION ABSTLL, ANRM, BIGNUM, EPS, RMAX, RMIN, SAFMIN,
Expand Down Expand Up @@ -406,8 +406,11 @@ SUBROUTINE DSBEVX( JOBZ, RANGE, UPLO, N, KD, AB, LDAB, Q, LDQ,
ISCALE = 1
SIGMA = RMIN / ANRM
ELSE IF( ANRM.GT.RMAX ) THEN
ISCALE = 1
* An infinite norm gives SIGMA = 0; leave such a matrix
* unscaled so that VL and VU remain a valid interval.
SIGMA = RMAX / ANRM
IF( SIGMA.GT.ZERO )
$ ISCALE = 1
END IF
IF( ISCALE.EQ.1 ) THEN
IF( LOWER ) THEN
Expand Down Expand Up @@ -507,14 +510,8 @@ SUBROUTINE DSBEVX( JOBZ, RANGE, UPLO, N, KD, AB, LDAB, Q, LDQ,
* If matrix was scaled, then rescale eigenvalues appropriately.
*
30 CONTINUE
IF( ISCALE.EQ.1 ) THEN
IF( INFO.EQ.0 ) THEN
IMAX = M
ELSE
IMAX = INFO - 1
END IF
CALL DSCAL( IMAX, ONE / SIGMA, W, 1 )
END IF
IF( ISCALE.EQ.1 )
$ CALL DSCAL( M, ONE / SIGMA, W, 1 )
*
* If eigenvalues are not in order, then sort them, along with
* eigenvectors.
Expand Down
17 changes: 7 additions & 10 deletions SRC/dsbevx_2stage.f
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,7 @@ SUBROUTINE DSBEVX_2STAGE( JOBZ, RANGE, UPLO, N, KD, AB, LDAB,
LOGICAL ALLEIG, INDEIG, LOWER, TEST, VALEIG, WANTZ,
$ LQUERY
CHARACTER ORDER
INTEGER I, IINFO, IMAX, INDD, INDE, INDEE, INDIBL,
INTEGER I, IINFO, INDD, INDE, INDEE, INDIBL,
$ INDISP, INDIWO, INDWRK, ISCALE, ITMP1, J, JJ,
$ LLWORK, LWMIN, LHTRD, LWTRD, IB, INDHOUS,
$ NSPLIT
Expand Down Expand Up @@ -490,8 +490,11 @@ SUBROUTINE DSBEVX_2STAGE( JOBZ, RANGE, UPLO, N, KD, AB, LDAB,
ISCALE = 1
SIGMA = RMIN / ANRM
ELSE IF( ANRM.GT.RMAX ) THEN
ISCALE = 1
* An infinite norm gives SIGMA = 0; leave such a matrix
* unscaled so that VL and VU remain a valid interval.
SIGMA = RMAX / ANRM
IF( SIGMA.GT.ZERO )
$ ISCALE = 1
END IF
IF( ISCALE.EQ.1 ) THEN
IF( LOWER ) THEN
Expand Down Expand Up @@ -596,14 +599,8 @@ SUBROUTINE DSBEVX_2STAGE( JOBZ, RANGE, UPLO, N, KD, AB, LDAB,
* If matrix was scaled, then rescale eigenvalues appropriately.
*
30 CONTINUE
IF( ISCALE.EQ.1 ) THEN
IF( INFO.EQ.0 ) THEN
IMAX = M
ELSE
IMAX = INFO - 1
END IF
CALL DSCAL( IMAX, ONE / SIGMA, W, 1 )
END IF
IF( ISCALE.EQ.1 )
$ CALL DSCAL( M, ONE / SIGMA, W, 1 )
*
* If eigenvalues are not in order, then sort them, along with
* eigenvectors.
Expand Down
Loading
Loading