1 SUBROUTINE ZROT( N, CX, INCX, CY, INCY, C, S )
2 *
3 * -- LAPACK auxiliary routine (version 3.2) --
4 * -- LAPACK is a software package provided by Univ. of Tennessee, --
5 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
6 * November 2006
7 *
8 * .. Scalar Arguments ..
9 INTEGER INCX, INCY, N
10 DOUBLE PRECISION C
11 COMPLEX*16 S
12 * ..
13 * .. Array Arguments ..
14 COMPLEX*16 CX( * ), CY( * )
15 * ..
16 *
17 * Purpose
18 * =======
19 *
20 * ZROT applies a plane rotation, where the cos (C) is real and the
21 * sin (S) is complex, and the vectors CX and CY are complex.
22 *
23 * Arguments
24 * =========
25 *
26 * N (input) INTEGER
27 * The number of elements in the vectors CX and CY.
28 *
29 * CX (input/output) COMPLEX*16 array, dimension (N)
30 * On input, the vector X.
31 * On output, CX is overwritten with C*X + S*Y.
32 *
33 * INCX (input) INTEGER
34 * The increment between successive values of CY. INCX <> 0.
35 *
36 * CY (input/output) COMPLEX*16 array, dimension (N)
37 * On input, the vector Y.
38 * On output, CY is overwritten with -CONJG(S)*X + C*Y.
39 *
40 * INCY (input) INTEGER
41 * The increment between successive values of CY. INCX <> 0.
42 *
43 * C (input) DOUBLE PRECISION
44 * S (input) COMPLEX*16
45 * C and S define a rotation
46 * [ C S ]
47 * [ -conjg(S) C ]
48 * where C*C + S*CONJG(S) = 1.0.
49 *
50 * =====================================================================
51 *
52 * .. Local Scalars ..
53 INTEGER I, IX, IY
54 COMPLEX*16 STEMP
55 * ..
56 * .. Intrinsic Functions ..
57 INTRINSIC DCONJG
58 * ..
59 * .. Executable Statements ..
60 *
61 IF( N.LE.0 )
62 $ RETURN
63 IF( INCX.EQ.1 .AND. INCY.EQ.1 )
64 $ GO TO 20
65 *
66 * Code for unequal increments or equal increments not equal to 1
67 *
68 IX = 1
69 IY = 1
70 IF( INCX.LT.0 )
71 $ IX = ( -N+1 )*INCX + 1
72 IF( INCY.LT.0 )
73 $ IY = ( -N+1 )*INCY + 1
74 DO 10 I = 1, N
75 STEMP = C*CX( IX ) + S*CY( IY )
76 CY( IY ) = C*CY( IY ) - DCONJG( S )*CX( IX )
77 CX( IX ) = STEMP
78 IX = IX + INCX
79 IY = IY + INCY
80 10 CONTINUE
81 RETURN
82 *
83 * Code for both increments equal to 1
84 *
85 20 CONTINUE
86 DO 30 I = 1, N
87 STEMP = C*CX( I ) + S*CY( I )
88 CY( I ) = C*CY( I ) - DCONJG( S )*CX( I )
89 CX( I ) = STEMP
90 30 CONTINUE
91 RETURN
92 END
2 *
3 * -- LAPACK auxiliary routine (version 3.2) --
4 * -- LAPACK is a software package provided by Univ. of Tennessee, --
5 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
6 * November 2006
7 *
8 * .. Scalar Arguments ..
9 INTEGER INCX, INCY, N
10 DOUBLE PRECISION C
11 COMPLEX*16 S
12 * ..
13 * .. Array Arguments ..
14 COMPLEX*16 CX( * ), CY( * )
15 * ..
16 *
17 * Purpose
18 * =======
19 *
20 * ZROT applies a plane rotation, where the cos (C) is real and the
21 * sin (S) is complex, and the vectors CX and CY are complex.
22 *
23 * Arguments
24 * =========
25 *
26 * N (input) INTEGER
27 * The number of elements in the vectors CX and CY.
28 *
29 * CX (input/output) COMPLEX*16 array, dimension (N)
30 * On input, the vector X.
31 * On output, CX is overwritten with C*X + S*Y.
32 *
33 * INCX (input) INTEGER
34 * The increment between successive values of CY. INCX <> 0.
35 *
36 * CY (input/output) COMPLEX*16 array, dimension (N)
37 * On input, the vector Y.
38 * On output, CY is overwritten with -CONJG(S)*X + C*Y.
39 *
40 * INCY (input) INTEGER
41 * The increment between successive values of CY. INCX <> 0.
42 *
43 * C (input) DOUBLE PRECISION
44 * S (input) COMPLEX*16
45 * C and S define a rotation
46 * [ C S ]
47 * [ -conjg(S) C ]
48 * where C*C + S*CONJG(S) = 1.0.
49 *
50 * =====================================================================
51 *
52 * .. Local Scalars ..
53 INTEGER I, IX, IY
54 COMPLEX*16 STEMP
55 * ..
56 * .. Intrinsic Functions ..
57 INTRINSIC DCONJG
58 * ..
59 * .. Executable Statements ..
60 *
61 IF( N.LE.0 )
62 $ RETURN
63 IF( INCX.EQ.1 .AND. INCY.EQ.1 )
64 $ GO TO 20
65 *
66 * Code for unequal increments or equal increments not equal to 1
67 *
68 IX = 1
69 IY = 1
70 IF( INCX.LT.0 )
71 $ IX = ( -N+1 )*INCX + 1
72 IF( INCY.LT.0 )
73 $ IY = ( -N+1 )*INCY + 1
74 DO 10 I = 1, N
75 STEMP = C*CX( IX ) + S*CY( IY )
76 CY( IY ) = C*CY( IY ) - DCONJG( S )*CX( IX )
77 CX( IX ) = STEMP
78 IX = IX + INCX
79 IY = IY + INCY
80 10 CONTINUE
81 RETURN
82 *
83 * Code for both increments equal to 1
84 *
85 20 CONTINUE
86 DO 30 I = 1, N
87 STEMP = C*CX( I ) + S*CY( I )
88 CY( I ) = C*CY( I ) - DCONJG( S )*CX( I )
89 CX( I ) = STEMP
90 30 CONTINUE
91 RETURN
92 END