-*> \brief \b DLASD4 computes the square root of the i-th updated eigenvalue of a positive symmetric rank-one modification to a positive diagonal matrix. Used by sbdsdc.
+*> \brief \b DLASD4 computes the square root of the i-th updated eigenvalue of a positive symmetric rank-one modification to a positive diagonal matrix. Used by dbdsdc.
*
* =========== DOCUMENTATION ===========
*
*
SIGMA = D( N ) + TAU
DO 30 J = 1, N
- DELTA( J ) = ( D( J )-D( I ) ) - TAU
- WORK( J ) = D( J ) + D( I ) + TAU
+ DELTA( J ) = ( D( J )-D( N ) ) - TAU
+ WORK( J ) = D( J ) + D( N ) + TAU
30 CONTINUE
*
* Evaluate PSI and the derivative DPSI
TEMP = Z( N ) / ( DELTA( N )*WORK( N ) )
PHI = Z( N )*TEMP
DPHI = TEMP*TEMP
- ERRETM = EIGHT*( -PHI-PSI ) + ERRETM - PHI + RHOINV +
- $ ABS( TAU2 )*( DPSI+DPHI )
+ ERRETM = EIGHT*( -PHI-PSI ) + ERRETM - PHI + RHOINV
+* $ + ABS( TAU2 )*( DPSI+DPHI )
*
W = RHOINV + PHI + PSI
*
TEMP = Z( N ) / TAU2
PHI = Z( N )*TEMP
DPHI = TEMP*TEMP
- ERRETM = EIGHT*( -PHI-PSI ) + ERRETM - PHI + RHOINV +
- $ ABS( TAU2 )*( DPSI+DPHI )
+ ERRETM = EIGHT*( -PHI-PSI ) + ERRETM - PHI + RHOINV
+* $ + ABS( TAU2 )*( DPSI+DPHI )
*
W = RHOINV + PHI + PSI
*
TEMP = Z( N ) / TAU2
PHI = Z( N )*TEMP
DPHI = TEMP*TEMP
- ERRETM = EIGHT*( -PHI-PSI ) + ERRETM - PHI + RHOINV +
- $ ABS( TAU2 )*( DPSI+DPHI )
+ ERRETM = EIGHT*( -PHI-PSI ) + ERRETM - PHI + RHOINV
+* $ + ABS( TAU2 )*( DPSI+DPHI )
*
W = RHOINV + PHI + PSI
90 CONTINUE
DW = DPSI + DPHI + TEMP*TEMP
TEMP = Z( II )*TEMP
W = W + TEMP
- ERRETM = EIGHT*( PHI-PSI ) + ERRETM + TWO*RHOINV +
- $ THREE*ABS( TEMP ) + ABS( TAU2 )*DW
+ ERRETM = EIGHT*( PHI-PSI ) + ERRETM + TWO*RHOINV
+ $ + THREE*ABS( TEMP )
+* $ + ABS( TAU2 )*DW
*
* Test for convergence
*
*
IF( INFO.NE.0 ) THEN
*
-* If INFO is not 0, i.e., DLAED6 failed, switch back to 2 pole interpolation.
+* If INFO is not 0, i.e., DLAED6 failed, switch back
+* to 2 pole interpolation.
*
SWTCH3 = .FALSE.
INFO = 0
DW = DPSI + DPHI + TEMP*TEMP
TEMP = Z( II )*TEMP
W = RHOINV + PHI + PSI + TEMP
- ERRETM = EIGHT*( PHI-PSI ) + ERRETM + TWO*RHOINV +
- $ THREE*ABS( TEMP ) + ABS( TAU2 )*DW
+ ERRETM = EIGHT*( PHI-PSI ) + ERRETM + TWO*RHOINV
+ $ + THREE*ABS( TEMP )
+* $ + ABS( TAU2 )*DW
*
SWTCH = .FALSE.
IF( ORGATI ) THEN
*
IF( INFO.NE.0 ) THEN
*
-* If INFO is not 0, i.e., DLAED6 failed, switch back to two pole interpolation
+* If INFO is not 0, i.e., DLAED6 failed, switch
+* back to two pole interpolation
*
SWTCH3 = .FALSE.
INFO = 0
DW = DPSI + DPHI + TEMP*TEMP
TEMP = Z( II )*TEMP
W = RHOINV + PHI + PSI + TEMP
- ERRETM = EIGHT*( PHI-PSI ) + ERRETM + TWO*RHOINV +
- $ THREE*ABS( TEMP ) + ABS( TAU2 )*DW
+ ERRETM = EIGHT*( PHI-PSI ) + ERRETM + TWO*RHOINV
+ $ + THREE*ABS( TEMP )
+* $ + ABS( TAU2 )*DW
*
IF( W*PREW.GT.ZERO .AND. ABS( W ).GT.ABS( PREW ) / TEN )
$ SWTCH = .NOT.SWTCH
*
* .. Scalar Arguments ..
INTEGER I, INFO, N
- REAL RHO, SIGMA
+ REAL RHO, SIGMA
* ..
* .. Array Arguments ..
- REAL D( * ), DELTA( * ), WORK( * ), Z( * )
+ REAL D( * ), DELTA( * ), WORK( * ), Z( * )
* ..
*
* =====================================================================
*
SIGMA = D( N ) + TAU
DO 30 J = 1, N
- DELTA( J ) = ( D( J )-D( I ) ) - TAU
- WORK( J ) = D( J ) + D( I ) + TAU
+ DELTA( J ) = ( D( J )-D( N ) ) - TAU
+ WORK( J ) = D( J ) + D( N ) + TAU
30 CONTINUE
*
* Evaluate PSI and the derivative DPSI
TEMP = Z( N ) / ( DELTA( N )*WORK( N ) )
PHI = Z( N )*TEMP
DPHI = TEMP*TEMP
- ERRETM = EIGHT*( -PHI-PSI ) + ERRETM - PHI + RHOINV +
- $ ABS( TAU2 )*( DPSI+DPHI )
+ ERRETM = EIGHT*( -PHI-PSI ) + ERRETM - PHI + RHOINV
+* $ + ABS( TAU2 )*( DPSI+DPHI )
*
W = RHOINV + PHI + PSI
*
TEMP = Z( N ) / TAU2
PHI = Z( N )*TEMP
DPHI = TEMP*TEMP
- ERRETM = EIGHT*( -PHI-PSI ) + ERRETM - PHI + RHOINV +
- $ ABS( TAU2 )*( DPSI+DPHI )
+ ERRETM = EIGHT*( -PHI-PSI ) + ERRETM - PHI + RHOINV
+* $ + ABS( TAU2 )*( DPSI+DPHI )
*
W = RHOINV + PHI + PSI
*
TEMP = Z( N ) / TAU2
PHI = Z( N )*TEMP
DPHI = TEMP*TEMP
- ERRETM = EIGHT*( -PHI-PSI ) + ERRETM - PHI + RHOINV +
- $ ABS( TAU2 )*( DPSI+DPHI )
+ ERRETM = EIGHT*( -PHI-PSI ) + ERRETM - PHI + RHOINV
+* $ + ABS( TAU2 )*( DPSI+DPHI )
*
W = RHOINV + PHI + PSI
90 CONTINUE
DW = DPSI + DPHI + TEMP*TEMP
TEMP = Z( II )*TEMP
W = W + TEMP
- ERRETM = EIGHT*( PHI-PSI ) + ERRETM + TWO*RHOINV +
- $ THREE*ABS( TEMP ) + ABS( TAU2 )*DW
+ ERRETM = EIGHT*( PHI-PSI ) + ERRETM + TWO*RHOINV
+ $ + THREE*ABS( TEMP )
+* $ + ABS( TAU2 )*DW
*
* Test for convergence
*
*
IF( INFO.NE.0 ) THEN
*
-* If INFO is not 0, i.e., SLAED6 failed, switch back to 2 pole interpolation.
+* If INFO is not 0, i.e., SLAED6 failed, switch back
+* to 2 pole interpolation.
*
SWTCH3 = .FALSE.
INFO = 0
DW = DPSI + DPHI + TEMP*TEMP
TEMP = Z( II )*TEMP
W = RHOINV + PHI + PSI + TEMP
- ERRETM = EIGHT*( PHI-PSI ) + ERRETM + TWO*RHOINV +
- $ THREE*ABS( TEMP ) + ABS( TAU2 )*DW
+ ERRETM = EIGHT*( PHI-PSI ) + ERRETM + TWO*RHOINV
+ $ + THREE*ABS( TEMP )
+* $ + ABS( TAU2 )*DW
*
SWTCH = .FALSE.
IF( ORGATI ) THEN
*
IF( INFO.NE.0 ) THEN
*
-* If INFO is not 0, i.e., SLAED6 failed, switch back to two pole interpolation
+* If INFO is not 0, i.e., SLAED6 failed, switch
+* back to two pole interpolation
*
SWTCH3 = .FALSE.
INFO = 0
DW = DPSI + DPHI + TEMP*TEMP
TEMP = Z( II )*TEMP
W = RHOINV + PHI + PSI + TEMP
- ERRETM = EIGHT*( PHI-PSI ) + ERRETM + TWO*RHOINV +
- $ THREE*ABS( TEMP ) + ABS( TAU2 )*DW
+ ERRETM = EIGHT*( PHI-PSI ) + ERRETM + TWO*RHOINV
+ $ + THREE*ABS( TEMP )
+* $ + ABS( TAU2 )*DW
*
IF( W*PREW.GT.ZERO .AND. ABS( W ).GT.ABS( PREW ) / TEN )
$ SWTCH = .NOT.SWTCH
SVD: Data file for testing Singular Value Decomposition routines
-18 Number of values of M
-0 0 0 1 1 2 2 3 3 3 10 10 16 16 30 30 40 40 Values of M
-0 1 3 1 2 0 1 0 1 3 10 16 10 16 30 40 30 40 Values of N
+19 Number of values of M
+0 0 0 1 1 1 2 2 3 3 3 10 10 16 16 30 30 40 40 Values of M
+0 1 3 0 1 2 0 1 0 1 3 10 16 10 16 30 40 30 40 Values of N
5 Number of parameter values
1 3 3 3 20 Values of NB (blocksize)
2 2 2 2 2 Values of NBMIN (minimum blocksize)