Applied patch provided by Sergey Kuznetsov @ Intel, fixes bug where TAU2 can be unini...
authorjames <james@8a072113-8704-0410-8d35-dd094bca7971>
Fri, 22 Mar 2013 12:38:47 +0000 (12:38 +0000)
committerjames <james@8a072113-8704-0410-8d35-dd094bca7971>
Fri, 22 Mar 2013 12:38:47 +0000 (12:38 +0000)
SRC/dlasd4.f
SRC/slasd4.f

index 877560c..838f716 100644 (file)
 *
       EPS = DLAMCH( 'Epsilon' )
       RHOINV = ONE / RHO
+      TAU2= ZERO
 *
 *     The case I = N
 *
                ELSE
                   TAU2 = ( A+SQRT( A*A+FOUR*B*C ) ) / ( TWO*C )
                END IF
+               TAU = TAU2 / ( D( N )+SQRT( D( N )*D( N )+TAU2 ) )
             END IF
 *
 *           It can be proved that
             ELSE
                TAU2 = ( A+SQRT( A*A+FOUR*B*C ) ) / ( TWO*C )
             END IF
+            TAU = TAU2 / ( D( N )+SQRT( D( N )*D( N )+TAU2 ) )
+
 *
 *           It can be proved that
 *           D(N)^2 < D(N)^2+TAU2 < SIGMA(N)^2 < D(N)^2+RHO/2
 *
 *        The following TAU is to approximate SIGMA_n - D( N )
 *
-         TAU = TAU2 / ( D( N )+SQRT( D( N )*D( N )+TAU2 ) )
+*         TAU = TAU2 / ( D( N )+SQRT( D( N )*D( N )+TAU2 ) )
 *
          SIGMA = D( N ) + TAU
          DO 30 J = 1, N
index 6bed144..bf0f2cf 100644 (file)
 *
       EPS = SLAMCH( 'Epsilon' )
       RHOINV = ONE / RHO
+      TAU2= ZERO
 *
 *     The case I = N
 *
                ELSE
                   TAU2 = ( A+SQRT( A*A+FOUR*B*C ) ) / ( TWO*C )
                END IF
+               TAU = TAU2 / ( D( N )+SQRT( D( N )*D( N )+TAU2 ) )
             END IF
 *
 *           It can be proved that
             ELSE
                TAU2 = ( A+SQRT( A*A+FOUR*B*C ) ) / ( TWO*C )
             END IF
+            TAU = TAU2 / ( D( N )+SQRT( D( N )*D( N )+TAU2 ) )
+
 *
 *           It can be proved that
 *           D(N)^2 < D(N)^2+TAU2 < SIGMA(N)^2 < D(N)^2+RHO/2
 *
 *        The following TAU is to approximate SIGMA_n - D( N )
 *
-         TAU = TAU2 / ( D( N )+SQRT( D( N )*D( N )+TAU2 ) )
+*         TAU = TAU2 / ( D( N )+SQRT( D( N )*D( N )+TAU2 ) )
 *
          SIGMA = D( N ) + TAU
          DO 30 J = 1, N