LAPACK  3.8.0
LAPACK: Linear Algebra PACKage

◆ zdrot()

subroutine zdrot ( integer  N,
complex*16, dimension( * )  CX,
integer  INCX,
complex*16, dimension( * )  CY,
integer  INCY,
double precision  C,
double precision  S 
)

ZDROT

Purpose:
 Applies a plane rotation, where the cos and sin (c and s) are real
 and the vectors cx and cy are complex.
 jack dongarra, linpack, 3/11/78.
Parameters
[in]N
          N is INTEGER
           On entry, N specifies the order of the vectors cx and cy.
           N must be at least zero.
[in,out]CX
          CX is COMPLEX*16 array, dimension at least
           ( 1 + ( N - 1 )*abs( INCX ) ).
           Before entry, the incremented array CX must contain the n
           element vector cx. On exit, CX is overwritten by the updated
           vector cx.
[in]INCX
          INCX is INTEGER
           On entry, INCX specifies the increment for the elements of
           CX. INCX must not be zero.
[in,out]CY
          CY is COMPLEX*16 array, dimension at least
           ( 1 + ( N - 1 )*abs( INCY ) ).
           Before entry, the incremented array CY must contain the n
           element vector cy. On exit, CY is overwritten by the updated
           vector cy.
[in]INCY
          INCY is INTEGER
           On entry, INCY specifies the increment for the elements of
           CY. INCY must not be zero.
[in]C
          C is DOUBLE PRECISION
           On entry, C specifies the cosine, cos.
[in]S
          S is DOUBLE PRECISION
           On entry, S specifies the sine, sin.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Date
December 2016

Definition at line 100 of file zdrot.f.

100 *
101 * -- Reference BLAS level1 routine (version 3.7.0) --
102 * -- Reference BLAS is a software package provided by Univ. of Tennessee, --
103 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
104 * December 2016
105 *
106 * .. Scalar Arguments ..
107  INTEGER incx, incy, n
108  DOUBLE PRECISION c, s
109 * ..
110 * .. Array Arguments ..
111  COMPLEX*16 cx( * ), cy( * )
112 * ..
113 *
114 * =====================================================================
115 *
116 * .. Local Scalars ..
117  INTEGER i, ix, iy
118  COMPLEX*16 ctemp
119 * ..
120 * .. Executable Statements ..
121 *
122  IF( n.LE.0 )
123  $ RETURN
124  IF( incx.EQ.1 .AND. incy.EQ.1 ) THEN
125 *
126 * code for both increments equal to 1
127 *
128  DO i = 1, n
129  ctemp = c*cx( i ) + s*cy( i )
130  cy( i ) = c*cy( i ) - s*cx( i )
131  cx( i ) = ctemp
132  END DO
133  ELSE
134 *
135 * code for unequal increments or equal increments not equal
136 * to 1
137 *
138  ix = 1
139  iy = 1
140  IF( incx.LT.0 )
141  $ ix = ( -n+1 )*incx + 1
142  IF( incy.LT.0 )
143  $ iy = ( -n+1 )*incy + 1
144  DO i = 1, n
145  ctemp = c*cx( ix ) + s*cy( iy )
146  cy( iy ) = c*cy( iy ) - s*cx( ix )
147  cx( ix ) = ctemp
148  ix = ix + incx
149  iy = iy + incy
150  END DO
151  END IF
152  RETURN
Here is the caller graph for this function: