1 SUBROUTINE dlasq6( I0, N0, Z, PP, DMIN, DMIN1, DMIN2, DN,
11 DOUBLE PRECISION DMIN, DMIN1, DMIN2, DN, DNM1, DNM2
14 DOUBLE PRECISION Z( * )
61 parameter( zero = 0.0d0 )
65 DOUBLE PRECISION D, EMIN, SAFMIN, TEMP
68 DOUBLE PRECISION DLAMCH
76 IF( ( n0-i0-1 ).LE.0 )
79 safmin = dlamch(
'Safe minimum' )
86 DO 10 j4 = 4*i0, 4*( n0-3 ), 4
87 z( j4-2 ) = d + z( j4-1 )
88 IF( z( j4-2 ).EQ.zero )
THEN
93 ELSE IF( safmin*z( j4+1 ).LT.z( j4-2 ) .AND.
94 $ safmin*z( j4-2 ).LT.z( j4+1 ) )
THEN
95 temp = z( j4+1 ) / z( j4-2 )
96 z( j4 ) = z( j4-1 )*temp
99 z( j4 ) = z( j4+1 )*( z( j4-1 ) / z( j4-2 ) )
100 d = z( j4+1 )*( d / z( j4-2 ) )
102 dmin = min( dmin, d )
103 emin = min( emin, z( j4 ) )
106 DO 20 j4 = 4*i0, 4*( n0-3 ), 4
107 z( j4-3 ) = d + z( j4 )
108 IF( z( j4-3 ).EQ.zero )
THEN
113 ELSE IF( safmin*z( j4+2 ).LT.z( j4-3 ) .AND.
114 $ safmin*z( j4-3 ).LT.z( j4+2 ) )
THEN
115 temp = z( j4+2 ) / z( j4-3 )
116 z( j4-1 ) = z( j4 )*temp
119 z( j4-1 ) = z( j4+2 )*( z( j4 ) / z( j4-3 ) )
120 d = z( j4+2 )*( d / z( j4-3 ) )
122 dmin = min( dmin, d )
123 emin = min( emin, z( j4-1 ) )
133 z( j4-2 ) = dnm2 + z( j4p2 )
134 IF( z( j4-2 ).EQ.zero )
THEN
139 ELSE IF( safmin*z( j4p2+2 ).LT.z( j4-2 ) .AND.
140 $ safmin*z( j4-2 ).LT.z( j4p2+2 ) )
THEN
141 temp = z( j4p2+2 ) / z( j4-2 )
142 z( j4 ) = z( j4p2 )*temp
145 z( j4 ) = z( j4p2+2 )*( z( j4p2 ) / z( j4-2 ) )
146 dnm1 = z( j4p2+2 )*( dnm2 / z( j4-2 ) )
148 dmin = min( dmin, dnm1 )
153 z( j4-2 ) = dnm1 + z( j4p2 )
154 IF( z( j4-2 ).EQ.zero )
THEN
159 ELSE IF( safmin*z( j4p2+2 ).LT.z( j4-2 ) .AND.
160 $ safmin*z( j4-2 ).LT.z( j4p2+2 ) )
THEN
161 temp = z( j4p2+2 ) / z( j4-2 )
162 z( j4 ) = z( j4p2 )*temp
165 z( j4 ) = z( j4p2+2 )*( z( j4p2 ) / z( j4-2 ) )
166 dn = z( j4p2+2 )*( dnm1 / z( j4-2 ) )
168 dmin = min( dmin, dn )
subroutine dlasq6(I0, N0, Z, PP, DMIN, DMIN1, DMIN2, DN, DNM1, DNM2)