1 SUBROUTINE ZLAR2V( N, X, Y, Z, INCX, C, S, INCC ) 2* 3* -- LAPACK auxiliary routine (version 3.0) -- 4* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., 5* Courant Institute, Argonne National Lab, and Rice University 6* February 29, 1992 7* 8* .. Scalar Arguments .. 9 INTEGER INCC, INCX, N 10* .. 11* .. Array Arguments .. 12 DOUBLE PRECISION C( * ) 13 COMPLEX*16 S( * ), X( * ), Y( * ), Z( * ) 14* .. 15* 16* Purpose 17* ======= 18* 19* ZLAR2V applies a vector of complex plane rotations with real cosines 20* from both sides to a sequence of 2-by-2 complex Hermitian matrices, 21* defined by the elements of the vectors x, y and z. For i = 1,2,...,n 22* 23* ( x(i) z(i) ) := 24* ( conjg(z(i)) y(i) ) 25* 26* ( c(i) conjg(s(i)) ) ( x(i) z(i) ) ( c(i) -conjg(s(i)) ) 27* ( -s(i) c(i) ) ( conjg(z(i)) y(i) ) ( s(i) c(i) ) 28* 29* Arguments 30* ========= 31* 32* N (input) INTEGER 33* The number of plane rotations to be applied. 34* 35* X (input/output) COMPLEX*16 array, dimension (1+(N-1)*INCX) 36* The vector x; the elements of x are assumed to be real. 37* 38* Y (input/output) COMPLEX*16 array, dimension (1+(N-1)*INCX) 39* The vector y; the elements of y are assumed to be real. 40* 41* Z (input/output) COMPLEX*16 array, dimension (1+(N-1)*INCX) 42* The vector z. 43* 44* INCX (input) INTEGER 45* The increment between elements of X, Y and Z. INCX > 0. 46* 47* C (input) DOUBLE PRECISION array, dimension (1+(N-1)*INCC) 48* The cosines of the plane rotations. 49* 50* S (input) COMPLEX*16 array, dimension (1+(N-1)*INCC) 51* The sines of the plane rotations. 52* 53* INCC (input) INTEGER 54* The increment between elements of C and S. INCC > 0. 55* 56* ===================================================================== 57* 58* .. Local Scalars .. 59 INTEGER I, IC, IX 60 DOUBLE PRECISION CI, SII, SIR, T1I, T1R, T5, T6, XI, YI, ZII, 61 $ ZIR 62 COMPLEX*16 SI, T2, T3, T4, ZI 63* .. 64* .. Intrinsic Functions .. 65 INTRINSIC DBLE, DCMPLX, DCONJG, DIMAG 66* .. 67* .. Executable Statements .. 68* 69 IX = 1 70 IC = 1 71 DO 10 I = 1, N 72 XI = DBLE( X( IX ) ) 73 YI = DBLE( Y( IX ) ) 74 ZI = Z( IX ) 75 ZIR = DBLE( ZI ) 76 ZII = DIMAG( ZI ) 77 CI = C( IC ) 78 SI = S( IC ) 79 SIR = DBLE( SI ) 80 SII = DIMAG( SI ) 81 T1R = SIR*ZIR - SII*ZII 82 T1I = SIR*ZII + SII*ZIR 83 T2 = CI*ZI 84 T3 = T2 - DCONJG( SI )*XI 85 T4 = DCONJG( T2 ) + SI*YI 86 T5 = CI*XI + T1R 87 T6 = CI*YI - T1R 88 X( IX ) = CI*T5 + ( SIR*DBLE( T4 )+SII*DIMAG( T4 ) ) 89 Y( IX ) = CI*T6 - ( SIR*DBLE( T3 )-SII*DIMAG( T3 ) ) 90 Z( IX ) = CI*T3 + DCONJG( SI )*DCMPLX( T6, T1I ) 91 IX = IX + INCX 92 IC = IC + INCC 93 10 CONTINUE 94 RETURN 95* 96* End of ZLAR2V 97* 98 END 99