1*> \brief \b ZLAR2V applies a vector of plane rotations with real cosines and complex sines from both sides to a sequence of 2-by-2 symmetric/Hermitian matrices. 2* 3* =========== DOCUMENTATION =========== 4* 5* Online html documentation available at 6* http://www.netlib.org/lapack/explore-html/ 7* 8*> \htmlonly 9*> Download ZLAR2V + dependencies 10*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/zlar2v.f"> 11*> [TGZ]</a> 12*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/zlar2v.f"> 13*> [ZIP]</a> 14*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/zlar2v.f"> 15*> [TXT]</a> 16*> \endhtmlonly 17* 18* Definition: 19* =========== 20* 21* SUBROUTINE ZLAR2V( N, X, Y, Z, INCX, C, S, INCC ) 22* 23* .. Scalar Arguments .. 24* INTEGER INCC, INCX, N 25* .. 26* .. Array Arguments .. 27* DOUBLE PRECISION C( * ) 28* COMPLEX*16 S( * ), X( * ), Y( * ), Z( * ) 29* .. 30* 31* 32*> \par Purpose: 33* ============= 34*> 35*> \verbatim 36*> 37*> ZLAR2V applies a vector of complex plane rotations with real cosines 38*> from both sides to a sequence of 2-by-2 complex Hermitian matrices, 39*> defined by the elements of the vectors x, y and z. For i = 1,2,...,n 40*> 41*> ( x(i) z(i) ) := 42*> ( conjg(z(i)) y(i) ) 43*> 44*> ( c(i) conjg(s(i)) ) ( x(i) z(i) ) ( c(i) -conjg(s(i)) ) 45*> ( -s(i) c(i) ) ( conjg(z(i)) y(i) ) ( s(i) c(i) ) 46*> \endverbatim 47* 48* Arguments: 49* ========== 50* 51*> \param[in] N 52*> \verbatim 53*> N is INTEGER 54*> The number of plane rotations to be applied. 55*> \endverbatim 56*> 57*> \param[in,out] X 58*> \verbatim 59*> X is COMPLEX*16 array, dimension (1+(N-1)*INCX) 60*> The vector x; the elements of x are assumed to be real. 61*> \endverbatim 62*> 63*> \param[in,out] Y 64*> \verbatim 65*> Y is COMPLEX*16 array, dimension (1+(N-1)*INCX) 66*> The vector y; the elements of y are assumed to be real. 67*> \endverbatim 68*> 69*> \param[in,out] Z 70*> \verbatim 71*> Z is COMPLEX*16 array, dimension (1+(N-1)*INCX) 72*> The vector z. 73*> \endverbatim 74*> 75*> \param[in] INCX 76*> \verbatim 77*> INCX is INTEGER 78*> The increment between elements of X, Y and Z. INCX > 0. 79*> \endverbatim 80*> 81*> \param[in] C 82*> \verbatim 83*> C is DOUBLE PRECISION array, dimension (1+(N-1)*INCC) 84*> The cosines of the plane rotations. 85*> \endverbatim 86*> 87*> \param[in] S 88*> \verbatim 89*> S is COMPLEX*16 array, dimension (1+(N-1)*INCC) 90*> The sines of the plane rotations. 91*> \endverbatim 92*> 93*> \param[in] INCC 94*> \verbatim 95*> INCC is INTEGER 96*> The increment between elements of C and S. INCC > 0. 97*> \endverbatim 98* 99* Authors: 100* ======== 101* 102*> \author Univ. of Tennessee 103*> \author Univ. of California Berkeley 104*> \author Univ. of Colorado Denver 105*> \author NAG Ltd. 106* 107*> \ingroup complex16OTHERauxiliary 108* 109* ===================================================================== 110 SUBROUTINE ZLAR2V( N, X, Y, Z, INCX, C, S, INCC ) 111* 112* -- LAPACK auxiliary routine -- 113* -- LAPACK is a software package provided by Univ. of Tennessee, -- 114* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 115* 116* .. Scalar Arguments .. 117 INTEGER INCC, INCX, N 118* .. 119* .. Array Arguments .. 120 DOUBLE PRECISION C( * ) 121 COMPLEX*16 S( * ), X( * ), Y( * ), Z( * ) 122* .. 123* 124* ===================================================================== 125* 126* .. Local Scalars .. 127 INTEGER I, IC, IX 128 DOUBLE PRECISION CI, SII, SIR, T1I, T1R, T5, T6, XI, YI, ZII, 129 $ ZIR 130 COMPLEX*16 SI, T2, T3, T4, ZI 131* .. 132* .. Intrinsic Functions .. 133 INTRINSIC DBLE, DCMPLX, DCONJG, DIMAG 134* .. 135* .. Executable Statements .. 136* 137 IX = 1 138 IC = 1 139 DO 10 I = 1, N 140 XI = DBLE( X( IX ) ) 141 YI = DBLE( Y( IX ) ) 142 ZI = Z( IX ) 143 ZIR = DBLE( ZI ) 144 ZII = DIMAG( ZI ) 145 CI = C( IC ) 146 SI = S( IC ) 147 SIR = DBLE( SI ) 148 SII = DIMAG( SI ) 149 T1R = SIR*ZIR - SII*ZII 150 T1I = SIR*ZII + SII*ZIR 151 T2 = CI*ZI 152 T3 = T2 - DCONJG( SI )*XI 153 T4 = DCONJG( T2 ) + SI*YI 154 T5 = CI*XI + T1R 155 T6 = CI*YI - T1R 156 X( IX ) = CI*T5 + ( SIR*DBLE( T4 )+SII*DIMAG( T4 ) ) 157 Y( IX ) = CI*T6 - ( SIR*DBLE( T3 )-SII*DIMAG( T3 ) ) 158 Z( IX ) = CI*T3 + DCONJG( SI )*DCMPLX( T6, T1I ) 159 IX = IX + INCX 160 IC = IC + INCC 161 10 CONTINUE 162 RETURN 163* 164* End of ZLAR2V 165* 166 END 167