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