changed matrix norm to 'M' (max) from 'I' (inf) for scaling of input matrix
authorjames <james@8a072113-8704-0410-8d35-dd094bca7971>
Thu, 24 Feb 2011 21:12:23 +0000 (21:12 +0000)
committerjames <james@8a072113-8704-0410-8d35-dd094bca7971>
Thu, 24 Feb 2011 21:12:23 +0000 (21:12 +0000)
and added check for zero norm in xSTERF (the xSTEQR already had this check)
this fixes the issue reported in bug0036

SRC/dsteqr.f
SRC/dsterf.f
SRC/ssteqr.f
SRC/ssterf.f

index a0ec5cdb523644fd51281a1c93a9b3352ed23623..17a17468a9c8589e89ede6cbfacb8df8ad6ef9f4 100644 (file)
 *
 *     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
index 4f2a9bcf677c6cebf892db0797c11525042ed49b..74f289b645044bcd71c0f35e8b1b7623c5698a25 100644 (file)
@@ -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.
 *
 *
 *     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 )
index 952fb5021252a6482c46b7873cc3f99eca2532ff..835c82fc1aea42cf4111a8b3dc40a2af348fd9c7 100644 (file)
 *
 *     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
index a51c379da47498512563002ecd3ec02cc7341253..b9110dd61a10db3b54548a1bf00ad0dc2be597c8 100644 (file)
 *
 *     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,