115 SUBROUTINE slasq6( I0, N0, Z, PP, DMIN, DMIN1, DMIN2, DN,
124 REAL DMIN, DMIN1, DMIN2, DN, DNM1, DNM2
134 parameter( zero = 0.0e0 )
138 REAL D, EMIN, SAFMIN, TEMP
149 IF( ( n0-i0-1 ).LE.0 )
152 safmin = slamch(
'Safe minimum' )
159 DO 10 j4 = 4*i0, 4*( n0-3 ), 4
160 z( j4-2 ) = d + z( j4-1 )
161 IF( z( j4-2 ).EQ.zero )
THEN
166 ELSE IF( safmin*z( j4+1 ).LT.z( j4-2 ) .AND.
167 $ safmin*z( j4-2 ).LT.z( j4+1 ) )
THEN
168 temp = z( j4+1 ) / z( j4-2 )
169 z( j4 ) = z( j4-1 )*temp
172 z( j4 ) = z( j4+1 )*( z( j4-1 ) / z( j4-2 ) )
173 d = z( j4+1 )*( d / z( j4-2 ) )
175 dmin = min( dmin, d )
176 emin = min( emin, z( j4 ) )
179 DO 20 j4 = 4*i0, 4*( n0-3 ), 4
180 z( j4-3 ) = d + z( j4 )
181 IF( z( j4-3 ).EQ.zero )
THEN
186 ELSE IF( safmin*z( j4+2 ).LT.z( j4-3 ) .AND.
187 $ safmin*z( j4-3 ).LT.z( j4+2 ) )
THEN
188 temp = z( j4+2 ) / z( j4-3 )
189 z( j4-1 ) = z( j4 )*temp
192 z( j4-1 ) = z( j4+2 )*( z( j4 ) / z( j4-3 ) )
193 d = z( j4+2 )*( d / z( j4-3 ) )
195 dmin = min( dmin, d )
196 emin = min( emin, z( j4-1 ) )
206 z( j4-2 ) = dnm2 + z( j4p2 )
207 IF( z( j4-2 ).EQ.zero )
THEN
212 ELSE IF( safmin*z( j4p2+2 ).LT.z( j4-2 ) .AND.
213 $ safmin*z( j4-2 ).LT.z( j4p2+2 ) )
THEN
214 temp = z( j4p2+2 ) / z( j4-2 )
215 z( j4 ) = z( j4p2 )*temp
218 z( j4 ) = z( j4p2+2 )*( z( j4p2 ) / z( j4-2 ) )
219 dnm1 = z( j4p2+2 )*( dnm2 / z( j4-2 ) )
221 dmin = min( dmin, dnm1 )
226 z( j4-2 ) = dnm1 + z( j4p2 )
227 IF( z( j4-2 ).EQ.zero )
THEN
232 ELSE IF( safmin*z( j4p2+2 ).LT.z( j4-2 ) .AND.
233 $ safmin*z( j4-2 ).LT.z( j4p2+2 ) )
THEN
234 temp = z( j4p2+2 ) / z( j4-2 )
235 z( j4 ) = z( j4p2 )*temp
238 z( j4 ) = z( j4p2+2 )*( z( j4p2 ) / z( j4-2 ) )
239 dn = z( j4p2+2 )*( dnm1 / z( j4-2 ) )
241 dmin = min( dmin, dn )
subroutine slasq6(i0, n0, z, pp, dmin, dmin1, dmin2, dn, dnm1, dnm2)
SLASQ6 computes one dqd transform in ping-pong form. Used by sbdsqr and sstegr.