158 SUBROUTINE clags2( UPPER, A1, A2, A3, B1, B2, B3, CSU, SNU, CSV,
168 REAL a1, a3, b1, b3, csq, csu, csv
169 COMPLEX a2, b2, snq, snu, snv
176 parameter( zero = 0.0e+0, one = 1.0e+0 )
179 REAL a, aua11, aua12, aua21, aua22, avb11, avb12,
180 $ avb21, avb22, csl, csr, d, fb, fc, s1, s2, snl,
181 $ snr, ua11r, ua22r, vb11r, vb22r
182 COMPLEX b, c, d1, r, t, ua11, ua12, ua21, ua22, vb11,
189 INTRINSIC abs, aimag, cmplx, conjg, real
195 abs1( t ) = abs(
REAL( T ) ) + abs( aimag( t ) )
223 CALL
slasv2( a, fb, d, s1, s2, snr, csr, snl, csl )
225 IF( abs( csl ).GE.abs( snl ) .OR. abs( csr ).GE.abs( snr ) )
232 ua12 = csl*a2 + d1*snl*a3
235 vb12 = csr*b2 + d1*snr*b3
237 aua12 = abs( csl )*abs1( a2 ) + abs( snl )*abs( a3 )
238 avb12 = abs( csr )*abs1( b2 ) + abs( snr )*abs( b3 )
242 IF( ( abs( ua11r )+abs1( ua12 ) ).EQ.zero )
THEN
243 CALL
clartg( -cmplx( vb11r ), conjg( vb12 ), csq, snq,
245 ELSE IF( ( abs( vb11r )+abs1( vb12 ) ).EQ.zero )
THEN
246 CALL
clartg( -cmplx( ua11r ), conjg( ua12 ), csq, snq,
248 ELSE IF( aua12 / ( abs( ua11r )+abs1( ua12 ) ).LE.avb12 /
249 $ ( abs( vb11r )+abs1( vb12 ) ) )
THEN
250 CALL
clartg( -cmplx( ua11r ), conjg( ua12 ), csq, snq,
253 CALL
clartg( -cmplx( vb11r ), conjg( vb12 ), csq, snq,
267 ua21 = -conjg( d1 )*snl*a1
268 ua22 = -conjg( d1 )*snl*a2 + csl*a3
270 vb21 = -conjg( d1 )*snr*b1
271 vb22 = -conjg( d1 )*snr*b2 + csr*b3
273 aua22 = abs( snl )*abs1( a2 ) + abs( csl )*abs( a3 )
274 avb22 = abs( snr )*abs1( b2 ) + abs( csr )*abs( b3 )
278 IF( ( abs1( ua21 )+abs1( ua22 ) ).EQ.zero )
THEN
279 CALL
clartg( -conjg( vb21 ), conjg( vb22 ), csq, snq, r )
280 ELSE IF( ( abs1( vb21 )+abs( vb22 ) ).EQ.zero )
THEN
281 CALL
clartg( -conjg( ua21 ), conjg( ua22 ), csq, snq, r )
282 ELSE IF( aua22 / ( abs1( ua21 )+abs1( ua22 ) ).LE.avb22 /
283 $ ( abs1( vb21 )+abs1( vb22 ) ) )
THEN
284 CALL
clartg( -conjg( ua21 ), conjg( ua22 ), csq, snq, r )
286 CALL
clartg( -conjg( vb21 ), conjg( vb22 ), csq, snq, r )
320 CALL
slasv2( a, fc, d, s1, s2, snr, csr, snl, csl )
322 IF( abs( csr ).GE.abs( snr ) .OR. abs( csl ).GE.abs( snl ) )
328 ua21 = -d1*snr*a1 + csr*a2
331 vb21 = -d1*snl*b1 + csl*b2
334 aua21 = abs( snr )*abs( a1 ) + abs( csr )*abs1( a2 )
335 avb21 = abs( snl )*abs( b1 ) + abs( csl )*abs1( b2 )
339 IF( ( abs1( ua21 )+abs( ua22r ) ).EQ.zero )
THEN
340 CALL
clartg( cmplx( vb22r ), vb21, csq, snq, r )
341 ELSE IF( ( abs1( vb21 )+abs( vb22r ) ).EQ.zero )
THEN
342 CALL
clartg( cmplx( ua22r ), ua21, csq, snq, r )
343 ELSE IF( aua21 / ( abs1( ua21 )+abs( ua22r ) ).LE.avb21 /
344 $ ( abs1( vb21 )+abs( vb22r ) ) )
THEN
345 CALL
clartg( cmplx( ua22r ), ua21, csq, snq, r )
347 CALL
clartg( cmplx( vb22r ), vb21, csq, snq, r )
351 snu = -conjg( d1 )*snr
353 snv = -conjg( d1 )*snl
360 ua11 = csr*a1 + conjg( d1 )*snr*a2
361 ua12 = conjg( d1 )*snr*a3
363 vb11 = csl*b1 + conjg( d1 )*snl*b2
364 vb12 = conjg( d1 )*snl*b3
366 aua11 = abs( csr )*abs( a1 ) + abs( snr )*abs1( a2 )
367 avb11 = abs( csl )*abs( b1 ) + abs( snl )*abs1( b2 )
371 IF( ( abs1( ua11 )+abs1( ua12 ) ).EQ.zero )
THEN
372 CALL
clartg( vb12, vb11, csq, snq, r )
373 ELSE IF( ( abs1( vb11 )+abs1( vb12 ) ).EQ.zero )
THEN
374 CALL
clartg( ua12, ua11, csq, snq, r )
375 ELSE IF( aua11 / ( abs1( ua11 )+abs1( ua12 ) ).LE.avb11 /
376 $ ( abs1( vb11 )+abs1( vb12 ) ) )
THEN
377 CALL
clartg( ua12, ua11, csq, snq, r )
379 CALL
clartg( vb12, vb11, csq, snq, r )
383 snu = conjg( d1 )*csr
385 snv = conjg( d1 )*csl