121 SUBROUTINE clargv( N, X, INCX, Y, INCY, C, INCC )
128 INTEGER INCC, INCX, INCY, N
132 COMPLEX X( * ), Y( * )
139 parameter( two = 2.0e+0, one = 1.0e+0, zero = 0.0e+0 )
141 parameter( czero = ( 0.0e+0, 0.0e+0 ) )
145 INTEGER COUNT, I, IC, IX, IY, J
146 REAL CS, D, DI, DR, EPS, F2, F2S, G2, G2S, SAFMIN,
147 $ SAFMN2, SAFMX2, SCALE
148 COMPLEX F, FF, FS, G, GS, R, SN
152 EXTERNAL slamch, slapy2
155 INTRINSIC abs, aimag,
cmplx, conjg, int, log,
max, real,
168 abs1( ff ) =
max( abs( real( ff ) ), abs( aimag( ff ) ) )
169 abssq( ff ) = real( ff )**2 + aimag( ff )**2
175 safmin = slamch( 's
' )
177 SAFMN2 = SLAMCH( 'b
' )**INT( LOG( SAFMIN / EPS ) /
178 $ LOG( SLAMCH( 'b
' ) ) / TWO )
179 SAFMX2 = ONE / SAFMN2
190 SCALE = MAX( ABS1( F ), ABS1( G ) )
194.GE.
IF( SCALESAFMX2 ) THEN
200.GE..AND..LT.
IF( SCALESAFMX2 COUNT 20 )
202.LE.
ELSE IF( SCALESAFMN2 ) THEN
203.EQ.
IF( GCZERO ) THEN
214.LE.
IF( SCALESAFMN2 )
219.LE.
IF( F2MAX( G2, ONE )*SAFMIN ) THEN
223.EQ.
IF( FCZERO ) THEN
225 R = SLAPY2( REAL( G ), AIMAG( G ) )
228 D = SLAPY2( REAL( GS ), AIMAG( GS ) )
229 SN = CMPLX( REAL( GS ) / D, -AIMAG( GS ) / D )
232 F2S = SLAPY2( REAL( FS ), AIMAG( FS ) )
246.GT.
IF( ABS1( F )ONE ) THEN
247 D = SLAPY2( REAL( F ), AIMAG( F ) )
248 FF = CMPLX( REAL( F ) / D, AIMAG( F ) / D )
250 DR = SAFMX2*REAL( F )
251 DI = SAFMX2*AIMAG( F )
253 FF = CMPLX( DR / D, DI / D )
255 SN = FF*CMPLX( REAL( GS ) / G2S, -AIMAG( GS ) / G2S )
263 F2S = SQRT( ONE+G2 / F2 )
266 R = CMPLX( F2S*REAL( FS ), F2S*AIMAG( FS ) )
270 SN = CMPLX( REAL( R ) / D, AIMAG( R ) / D )
272.NE.
IF( COUNT0 ) THEN
273.GT.
IF( COUNT0 ) THEN
subroutine clargv(n, x, incx, y, incy, c, incc)
CLARGV generates a vector of plane rotations with real cosines and complex sines.