summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--SRC/dsteqr.f2
-rw-r--r--SRC/dsterf.f9
-rw-r--r--SRC/ssteqr.f2
-rw-r--r--SRC/ssterf.f4
4 files changed, 11 insertions, 6 deletions
diff --git a/SRC/dsteqr.f b/SRC/dsteqr.f
index a0ec5cdb..17a17468 100644
--- a/SRC/dsteqr.f
+++ b/SRC/dsteqr.f
@@ -195,7 +195,7 @@
*
* Scale submatrix in rows and columns L to LEND
*
- ANORM = DLANST( 'I', LEND-L+1, D( L ), E( L ) )
+ ANORM = DLANST( 'M', LEND-L+1, D( L ), E( L ) )
ISCALE = 0
IF( ANORM.EQ.ZERO )
$ GO TO 10
diff --git a/SRC/dsterf.f b/SRC/dsterf.f
index 4f2a9bcf..74f289b6 100644
--- a/SRC/dsterf.f
+++ b/SRC/dsterf.f
@@ -54,7 +54,7 @@
$ NMAXIT
DOUBLE PRECISION ALPHA, ANORM, BB, C, EPS, EPS2, GAMMA, OLDC,
$ OLDGAM, P, R, RT1, RT2, RTE, S, SAFMAX, SAFMIN,
- $ SIGMA, SSFMAX, SSFMIN
+ $ SIGMA, SSFMAX, SSFMIN, RMAX
* ..
* .. External Functions ..
DOUBLE PRECISION DLAMCH, DLANST, DLAPY2
@@ -90,6 +90,7 @@
SAFMAX = ONE / SAFMIN
SSFMAX = SQRT( SAFMAX ) / THREE
SSFMIN = SQRT( SAFMIN ) / EPS2
+ RMAX = DLAMCH( 'O' )
*
* Compute the eigenvalues of the tridiagonal matrix.
*
@@ -128,9 +129,11 @@
*
* Scale submatrix in rows and columns L to LEND
*
- ANORM = DLANST( 'I', LEND-L+1, D( L ), E( L ) )
+ ANORM = DLANST( 'M', LEND-L+1, D( L ), E( L ) )
ISCALE = 0
- IF( ANORM.GT.SSFMAX ) THEN
+ IF( ANORM.EQ.ZERO )
+ $ GO TO 10
+ IF( (ANORM.GT.SSFMAX) ) THEN
ISCALE = 1
CALL DLASCL( 'G', 0, 0, ANORM, SSFMAX, LEND-L+1, 1, D( L ), N,
$ INFO )
diff --git a/SRC/ssteqr.f b/SRC/ssteqr.f
index 952fb502..835c82fc 100644
--- a/SRC/ssteqr.f
+++ b/SRC/ssteqr.f
@@ -195,7 +195,7 @@
*
* Scale submatrix in rows and columns L to LEND
*
- ANORM = SLANST( 'I', LEND-L+1, D( L ), E( L ) )
+ ANORM = SLANST( 'M', LEND-L+1, D( L ), E( L ) )
ISCALE = 0
IF( ANORM.EQ.ZERO )
$ GO TO 10
diff --git a/SRC/ssterf.f b/SRC/ssterf.f
index a51c379d..b9110dd6 100644
--- a/SRC/ssterf.f
+++ b/SRC/ssterf.f
@@ -128,8 +128,10 @@
*
* Scale submatrix in rows and columns L to LEND
*
- ANORM = SLANST( 'I', LEND-L+1, D( L ), E( L ) )
+ ANORM = SLANST( 'M', LEND-L+1, D( L ), E( L ) )
ISCALE = 0
+ IF( ANORM.EQ.ZERO )
+ $ GO TO 10
IF( ANORM.GT.SSFMAX ) THEN
ISCALE = 1
CALL SLASCL( 'G', 0, 0, ANORM, SSFMAX, LEND-L+1, 1, D( L ), N,