1 SUBROUTINE zlanv2( A, B, C, D, RT1, RT2, CS, SN )
10 COMPLEX*16 A, B, C, D, RT1, RT2, SN
49 DOUBLE PRECISION RZERO, HALF, RONE
50 parameter( rzero = 0.0d+0, half = 0.5d+0,
53 parameter( zero = ( 0.0d+0, 0.0d+0 ),
54 $ one = ( 1.0d+0, 0.0d+0 ) )
57 COMPLEX*16 AA, BB, DD, T, TEMP, TEMP2, U, X, Y
58 DOUBLE PRECISION ZR, ZI
61 EXTERNAL zlartg, dladiv
64 INTRINSIC dble, dcmplx, dconjg, dimag, sqrt
76 ELSE IF( b.EQ.zero )
THEN
88 ELSE IF( ( a-d ).EQ.zero )
THEN
92 IF( ( b+c ).EQ.zero )
THEN
94 sn = dcmplx( rzero, rone )*cs
97 CALL dladiv( dble( sqrt( b ) ), dimag( sqrt( b ) ),
98 $ dble( temp ), dimag( temp ), zr, zi )
99 temp2 = dcmplx( zr, zi )
101 CALL dladiv( dble( sqrt( c ) ), dimag( sqrt( c ) ),
102 $ dble( temp ), dimag( temp ), zr, zi )
103 sn = dcmplx( zr, zi )
116 IF( dble( x )*dble( y )+dimag( x )*dimag( y ).LT.rzero )
118 CALL dladiv( dble( u ), dimag( u ),
119 $ dble( x+y ), dimag( x+y ), zr, zi )
120 t = t - dcmplx( zr, zi )
125 CALL zlartg( a-t, c, cs, sn, aa )
129 dd = -dconjg( sn )*b + cs*d
131 a = aa*cs + bb*dconjg( sn ) + t
subroutine zlanv2(a, b, c, d, rt1, rt2, cs, sn)