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