Annotation of rpl/lapack/blas/drot.f, revision 1.14
1.8 bertrand 1: *> \brief \b DROT
2: *
3: * =========== DOCUMENTATION ===========
4: *
1.13 bertrand 5: * Online html documentation available at
6: * http://www.netlib.org/lapack/explore-html/
1.8 bertrand 7: *
8: * Definition:
9: * ===========
10: *
11: * SUBROUTINE DROT(N,DX,INCX,DY,INCY,C,S)
1.13 bertrand 12: *
1.8 bertrand 13: * .. Scalar Arguments ..
14: * DOUBLE PRECISION C,S
15: * INTEGER INCX,INCY,N
16: * ..
17: * .. Array Arguments ..
18: * DOUBLE PRECISION DX(*),DY(*)
19: * ..
1.13 bertrand 20: *
1.8 bertrand 21: *
22: *> \par Purpose:
23: * =============
24: *>
25: *> \verbatim
26: *>
27: *> DROT applies a plane rotation.
28: *> \endverbatim
29: *
1.14 ! bertrand 30: * Arguments:
! 31: * ==========
! 32: *
! 33: *> \param[in] N
! 34: *> \verbatim
! 35: *> N is INTEGER
! 36: *> number of elements in input vector(s)
! 37: *> \endverbatim
! 38: *>
! 39: *> \param[in,out] DX
! 40: *> \verbatim
! 41: *> DX is DOUBLE PRECISION array, dimension ( 1 + ( N - 1 )*abs( INCX ) )
! 42: *> \endverbatim
! 43: *>
! 44: *> \param[in] INCX
! 45: *> \verbatim
! 46: *> INCX is INTEGER
! 47: *> storage spacing between elements of DX
! 48: *> \endverbatim
! 49: *>
! 50: *> \param[in,out] DY
! 51: *> \verbatim
! 52: *> DY is DOUBLE PRECISION array, dimension ( 1 + ( N - 1 )*abs( INCY ) )
! 53: *> \endverbatim
! 54: *>
! 55: *> \param[in] INCY
! 56: *> \verbatim
! 57: *> INCY is INTEGER
! 58: *> storage spacing between elements of DY
! 59: *> \endverbatim
! 60: *>
! 61: *> \param[in] C
! 62: *> \verbatim
! 63: *> C is DOUBLE PRECISION
! 64: *> \endverbatim
! 65: *>
! 66: *> \param[in] S
! 67: *> \verbatim
! 68: *> S is DOUBLE PRECISION
! 69: *> \endverbatim
! 70: *
1.8 bertrand 71: * Authors:
72: * ========
73: *
1.13 bertrand 74: *> \author Univ. of Tennessee
75: *> \author Univ. of California Berkeley
76: *> \author Univ. of Colorado Denver
77: *> \author NAG Ltd.
1.8 bertrand 78: *
1.14 ! bertrand 79: *> \date November 2017
1.8 bertrand 80: *
81: *> \ingroup double_blas_level1
82: *
83: *> \par Further Details:
84: * =====================
85: *>
86: *> \verbatim
87: *>
88: *> jack dongarra, linpack, 3/11/78.
89: *> modified 12/3/93, array(1) declarations changed to array(*)
90: *> \endverbatim
91: *>
92: * =====================================================================
1.1 bertrand 93: SUBROUTINE DROT(N,DX,INCX,DY,INCY,C,S)
1.8 bertrand 94: *
1.14 ! bertrand 95: * -- Reference BLAS level1 routine (version 3.8.0) --
1.8 bertrand 96: * -- Reference BLAS is a software package provided by Univ. of Tennessee, --
97: * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
1.14 ! bertrand 98: * November 2017
1.8 bertrand 99: *
1.1 bertrand 100: * .. Scalar Arguments ..
101: DOUBLE PRECISION C,S
102: INTEGER INCX,INCY,N
103: * ..
104: * .. Array Arguments ..
105: DOUBLE PRECISION DX(*),DY(*)
106: * ..
107: *
108: * =====================================================================
109: *
110: * .. Local Scalars ..
111: DOUBLE PRECISION DTEMP
112: INTEGER I,IX,IY
113: * ..
114: IF (N.LE.0) RETURN
1.7 bertrand 115: IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
116: *
117: * code for both increments equal to 1
118: *
119: DO I = 1,N
120: DTEMP = C*DX(I) + S*DY(I)
121: DY(I) = C*DY(I) - S*DX(I)
122: DX(I) = DTEMP
123: END DO
124: ELSE
1.1 bertrand 125: *
126: * code for unequal increments or equal increments not equal
127: * to 1
128: *
1.7 bertrand 129: IX = 1
130: IY = 1
131: IF (INCX.LT.0) IX = (-N+1)*INCX + 1
132: IF (INCY.LT.0) IY = (-N+1)*INCY + 1
133: DO I = 1,N
134: DTEMP = C*DX(IX) + S*DY(IY)
135: DY(IY) = C*DY(IY) - S*DX(IX)
136: DX(IX) = DTEMP
137: IX = IX + INCX
138: IY = IY + INCY
139: END DO
140: END IF
1.1 bertrand 141: RETURN
142: END
CVSweb interface <joel.bertrand@systella.fr>