File:  [local] / rpl / lapack / blas / zdrot.f
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Jan 26 15:22:45 2010 UTC (14 years, 3 months ago) by bertrand
Branches: JKB
CVS tags: start, rpl-4_0_14, rpl-4_0_13, rpl-4_0_12, rpl-4_0_11, rpl-4_0_10


Commit initial.

    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>