--- rpl/lapack/lapack/dlasq5.f 2012/07/31 11:06:36 1.10
+++ rpl/lapack/lapack/dlasq5.f 2023/08/07 08:38:59 1.20
@@ -1,26 +1,26 @@
-*> \brief \b DLASQ5
+*> \brief \b DLASQ5 computes one dqds transform in ping-pong form. Used by sbdsqr and sstegr.
*
* =========== DOCUMENTATION ===========
*
-* Online html documentation available at
-* http://www.netlib.org/lapack/explore-html/
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
*> \htmlonly
-*> Download DLASQ5 + dependencies
-*>
-*> [TGZ]
-*>
-*> [ZIP]
-*>
+*> Download DLASQ5 + dependencies
+*>
+*> [TGZ]
+*>
+*> [ZIP]
+*>
*> [TXT]
-*> \endhtmlonly
+*> \endhtmlonly
*
* Definition:
* ===========
*
* SUBROUTINE DLASQ5( I0, N0, Z, PP, TAU, SIGMA, DMIN, DMIN1, DMIN2, DN,
* DNM1, DNM2, IEEE, EPS )
-*
+*
* .. Scalar Arguments ..
* LOGICAL IEEE
* INTEGER I0, N0, PP
@@ -29,7 +29,7 @@
* .. Array Arguments ..
* DOUBLE PRECISION Z( * )
* ..
-*
+*
*
*> \par Purpose:
* =============
@@ -121,7 +121,7 @@
*> IEEE is LOGICAL
*> Flag for IEEE or non IEEE arithmetic.
*> \endverbatim
-*
+*>
*> \param[in] EPS
*> \verbatim
*> EPS is DOUBLE PRECISION
@@ -131,12 +131,10 @@
* Authors:
* ========
*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date April 2012
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
*> \ingroup auxOTHERcomputational
*
@@ -144,10 +142,9 @@
SUBROUTINE DLASQ5( I0, N0, Z, PP, TAU, SIGMA, DMIN, DMIN1, DMIN2,
$ DN, DNM1, DNM2, IEEE, EPS )
*
-* -- LAPACK computational routine (version 3.4.1) --
+* -- LAPACK computational routine --
* -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
-* April 2012
*
* .. Scalar Arguments ..
LOGICAL IEEE
@@ -181,7 +178,7 @@
IF( TAU.LT.DTHRESH*HALF ) TAU = ZERO
IF( TAU.NE.ZERO ) THEN
J4 = 4*I0 + PP - 3
- EMIN = Z( J4+4 )
+ EMIN = Z( J4+4 )
D = Z( J4 ) - TAU
DMIN = D
DMIN1 = -Z( J4 )
@@ -192,7 +189,7 @@
*
IF( PP.EQ.0 ) THEN
DO 10 J4 = 4*I0, 4*( N0-3 ), 4
- Z( J4-2 ) = D + Z( J4-1 )
+ Z( J4-2 ) = D + Z( J4-1 )
TEMP = Z( J4+1 ) / Z( J4-2 )
D = D*TEMP - TAU
DMIN = MIN( DMIN, D )
@@ -201,7 +198,7 @@
10 CONTINUE
ELSE
DO 20 J4 = 4*I0, 4*( N0-3 ), 4
- Z( J4-3 ) = D + Z( J4 )
+ Z( J4-3 ) = D + Z( J4 )
TEMP = Z( J4+2 ) / Z( J4-3 )
D = D*TEMP - TAU
DMIN = MIN( DMIN, D )
@@ -210,7 +207,7 @@
20 CONTINUE
END IF
*
-* Unroll last two steps.
+* Unroll last two steps.
*
DNM2 = D
DMIN2 = DMIN
@@ -235,10 +232,10 @@
*
IF( PP.EQ.0 ) THEN
DO 30 J4 = 4*I0, 4*( N0-3 ), 4
- Z( J4-2 ) = D + Z( J4-1 )
+ Z( J4-2 ) = D + Z( J4-1 )
IF( D.LT.ZERO ) THEN
RETURN
- ELSE
+ ELSE
Z( J4 ) = Z( J4+1 )*( Z( J4-1 ) / Z( J4-2 ) )
D = Z( J4+1 )*( D / Z( J4-2 ) ) - TAU
END IF
@@ -247,10 +244,10 @@
30 CONTINUE
ELSE
DO 40 J4 = 4*I0, 4*( N0-3 ), 4
- Z( J4-3 ) = D + Z( J4 )
+ Z( J4-3 ) = D + Z( J4 )
IF( D.LT.ZERO ) THEN
RETURN
- ELSE
+ ELSE
Z( J4-1 ) = Z( J4+2 )*( Z( J4 ) / Z( J4-3 ) )
D = Z( J4+2 )*( D / Z( J4-3 ) ) - TAU
END IF
@@ -259,7 +256,7 @@
40 CONTINUE
END IF
*
-* Unroll last two steps.
+* Unroll last two steps.
*
DNM2 = D
DMIN2 = DMIN
@@ -290,17 +287,17 @@
ELSE
* This is the version that sets d's to zero if they are small enough
J4 = 4*I0 + PP - 3
- EMIN = Z( J4+4 )
+ EMIN = Z( J4+4 )
D = Z( J4 ) - TAU
DMIN = D
DMIN1 = -Z( J4 )
IF( IEEE ) THEN
-*
+*
* Code for IEEE arithmetic.
-*
+*
IF( PP.EQ.0 ) THEN
DO 50 J4 = 4*I0, 4*( N0-3 ), 4
- Z( J4-2 ) = D + Z( J4-1 )
+ Z( J4-2 ) = D + Z( J4-1 )
TEMP = Z( J4+1 ) / Z( J4-2 )
D = D*TEMP - TAU
IF( D.LT.DTHRESH ) D = ZERO
@@ -310,7 +307,7 @@
50 CONTINUE
ELSE
DO 60 J4 = 4*I0, 4*( N0-3 ), 4
- Z( J4-3 ) = D + Z( J4 )
+ Z( J4-3 ) = D + Z( J4 )
TEMP = Z( J4+2 ) / Z( J4-3 )
D = D*TEMP - TAU
IF( D.LT.DTHRESH ) D = ZERO
@@ -319,9 +316,9 @@
EMIN = MIN( Z( J4-1 ), EMIN )
60 CONTINUE
END IF
-*
-* Unroll last two steps.
-*
+*
+* Unroll last two steps.
+*
DNM2 = D
DMIN2 = DMIN
J4 = 4*( N0-2 ) - PP
@@ -330,7 +327,7 @@
Z( J4 ) = Z( J4P2+2 )*( Z( J4P2 ) / Z( J4-2 ) )
DNM1 = Z( J4P2+2 )*( DNM2 / Z( J4-2 ) ) - TAU
DMIN = MIN( DMIN, DNM1 )
-*
+*
DMIN1 = DMIN
J4 = J4 + 4
J4P2 = J4 + 2*PP - 1
@@ -338,17 +335,17 @@
Z( J4 ) = Z( J4P2+2 )*( Z( J4P2 ) / Z( J4-2 ) )
DN = Z( J4P2+2 )*( DNM1 / Z( J4-2 ) ) - TAU
DMIN = MIN( DMIN, DN )
-*
+*
ELSE
-*
+*
* Code for non IEEE arithmetic.
-*
+*
IF( PP.EQ.0 ) THEN
DO 70 J4 = 4*I0, 4*( N0-3 ), 4
- Z( J4-2 ) = D + Z( J4-1 )
+ Z( J4-2 ) = D + Z( J4-1 )
IF( D.LT.ZERO ) THEN
RETURN
- ELSE
+ ELSE
Z( J4 ) = Z( J4+1 )*( Z( J4-1 ) / Z( J4-2 ) )
D = Z( J4+1 )*( D / Z( J4-2 ) ) - TAU
END IF
@@ -358,10 +355,10 @@
70 CONTINUE
ELSE
DO 80 J4 = 4*I0, 4*( N0-3 ), 4
- Z( J4-3 ) = D + Z( J4 )
+ Z( J4-3 ) = D + Z( J4 )
IF( D.LT.ZERO ) THEN
RETURN
- ELSE
+ ELSE
Z( J4-1 ) = Z( J4+2 )*( Z( J4 ) / Z( J4-3 ) )
D = Z( J4+2 )*( D / Z( J4-3 ) ) - TAU
END IF
@@ -370,9 +367,9 @@
EMIN = MIN( EMIN, Z( J4-1 ) )
80 CONTINUE
END IF
-*
-* Unroll last two steps.
-*
+*
+* Unroll last two steps.
+*
DNM2 = D
DMIN2 = DMIN
J4 = 4*( N0-2 ) - PP
@@ -385,7 +382,7 @@
DNM1 = Z( J4P2+2 )*( DNM2 / Z( J4-2 ) ) - TAU
END IF
DMIN = MIN( DMIN, DNM1 )
-*
+*
DMIN1 = DMIN
J4 = J4 + 4
J4P2 = J4 + 2*PP - 1
@@ -397,10 +394,10 @@
DN = Z( J4P2+2 )*( DNM1 / Z( J4-2 ) ) - TAU
END IF
DMIN = MIN( DMIN, DN )
-*
+*
END IF
END IF
-*
+*
Z( J4+2 ) = DN
Z( 4*N0-PP ) = EMIN
RETURN