Annotation of rpl/lapack/blas/zdrot.f, revision 1.1
1.1 ! bertrand 1: SUBROUTINE ZDROT( N, CX, INCX, CY, INCY, C, S )
! 2: *
! 3: * .. Scalar Arguments ..
! 4: INTEGER INCX, INCY, N
! 5: DOUBLE PRECISION C, S
! 6: * ..
! 7: * .. Array Arguments ..
! 8: COMPLEX*16 CX( * ), CY( * )
! 9: * ..
! 10: *
! 11: * Purpose
! 12: * =======
! 13: *
! 14: * Applies a plane rotation, where the cos and sin (c and s) are real
! 15: * and the vectors cx and cy are complex.
! 16: * jack dongarra, linpack, 3/11/78.
! 17: *
! 18: * Arguments
! 19: * ==========
! 20: *
! 21: * N (input) INTEGER
! 22: * On entry, N specifies the order of the vectors cx and cy.
! 23: * N must be at least zero.
! 24: * Unchanged on exit.
! 25: *
! 26: * CX (input) COMPLEX*16 array, dimension at least
! 27: * ( 1 + ( N - 1 )*abs( INCX ) ).
! 28: * Before entry, the incremented array CX must contain the n
! 29: * element vector cx. On exit, CX is overwritten by the updated
! 30: * vector cx.
! 31: *
! 32: * INCX (input) INTEGER
! 33: * On entry, INCX specifies the increment for the elements of
! 34: * CX. INCX must not be zero.
! 35: * Unchanged on exit.
! 36: *
! 37: * CY (input) COMPLEX*16 array, dimension at least
! 38: * ( 1 + ( N - 1 )*abs( INCY ) ).
! 39: * Before entry, the incremented array CY must contain the n
! 40: * element vector cy. On exit, CY is overwritten by the updated
! 41: * vector cy.
! 42: *
! 43: * INCY (input) INTEGER
! 44: * On entry, INCY specifies the increment for the elements of
! 45: * CY. INCY must not be zero.
! 46: * Unchanged on exit.
! 47: *
! 48: * C (input) DOUBLE PRECISION
! 49: * On entry, C specifies the cosine, cos.
! 50: * Unchanged on exit.
! 51: *
! 52: * S (input) DOUBLE PRECISION
! 53: * On entry, S specifies the sine, sin.
! 54: * Unchanged on exit.
! 55: *
! 56: * =====================================================================
! 57: *
! 58: * .. Local Scalars ..
! 59: INTEGER I, IX, IY
! 60: COMPLEX*16 CTEMP
! 61: * ..
! 62: * .. Executable Statements ..
! 63: *
! 64: IF( N.LE.0 )
! 65: $ RETURN
! 66: IF( INCX.EQ.1 .AND. INCY.EQ.1 )
! 67: $ GO TO 20
! 68: *
! 69: * code for unequal increments or equal increments not equal
! 70: * to 1
! 71: *
! 72: IX = 1
! 73: IY = 1
! 74: IF( INCX.LT.0 )
! 75: $ IX = ( -N+1 )*INCX + 1
! 76: IF( INCY.LT.0 )
! 77: $ IY = ( -N+1 )*INCY + 1
! 78: DO 10 I = 1, N
! 79: CTEMP = C*CX( IX ) + S*CY( IY )
! 80: CY( IY ) = C*CY( IY ) - S*CX( IX )
! 81: CX( IX ) = CTEMP
! 82: IX = IX + INCX
! 83: IY = IY + INCY
! 84: 10 CONTINUE
! 85: RETURN
! 86: *
! 87: * code for both increments equal to 1
! 88: *
! 89: 20 CONTINUE
! 90: DO 30 I = 1, N
! 91: CTEMP = C*CX( I ) + S*CY( I )
! 92: CY( I ) = C*CY( I ) - S*CX( I )
! 93: CX( I ) = CTEMP
! 94: 30 CONTINUE
! 95: RETURN
! 96: END
CVSweb interface <joel.bertrand@systella.fr>