cdotu.f
131 lines
| 2.8 KiB
| text/x-fortran
|
FortranFixedLexer
r1601 | *> \brief \b CDOTU | |||
* | ||||
* =========== DOCUMENTATION =========== | ||||
* | ||||
* Online html documentation available at | ||||
* http://www.netlib.org/lapack/explore-html/ | ||||
* | ||||
* Definition: | ||||
* =========== | ||||
* | ||||
* COMPLEX FUNCTION CDOTU(N,CX,INCX,CY,INCY) | ||||
* | ||||
* .. Scalar Arguments .. | ||||
* INTEGER INCX,INCY,N | ||||
* .. | ||||
* .. Array Arguments .. | ||||
* COMPLEX CX(*),CY(*) | ||||
* .. | ||||
* | ||||
* | ||||
*> \par Purpose: | ||||
* ============= | ||||
*> | ||||
*> \verbatim | ||||
*> | ||||
*> CDOTU forms the dot product of two complex vectors | ||||
*> CDOTU = X^T * Y | ||||
*> | ||||
*> \endverbatim | ||||
* | ||||
* Arguments: | ||||
* ========== | ||||
* | ||||
*> \param[in] N | ||||
*> \verbatim | ||||
*> N is INTEGER | ||||
*> number of elements in input vector(s) | ||||
*> \endverbatim | ||||
*> | ||||
*> \param[in] CX | ||||
*> \verbatim | ||||
*> CX is REAL array, dimension ( 1 + ( N - 1 )*abs( INCX ) ) | ||||
*> \endverbatim | ||||
*> | ||||
*> \param[in] INCX | ||||
*> \verbatim | ||||
*> INCX is INTEGER | ||||
*> storage spacing between elements of CX | ||||
*> \endverbatim | ||||
*> | ||||
*> \param[in] CY | ||||
*> \verbatim | ||||
*> CY is REAL array, dimension ( 1 + ( N - 1 )*abs( INCY ) ) | ||||
*> \endverbatim | ||||
*> | ||||
*> \param[in] INCY | ||||
*> \verbatim | ||||
*> INCY is INTEGER | ||||
*> storage spacing between elements of CY | ||||
*> \endverbatim | ||||
* | ||||
* Authors: | ||||
* ======== | ||||
* | ||||
*> \author Univ. of Tennessee | ||||
*> \author Univ. of California Berkeley | ||||
*> \author Univ. of Colorado Denver | ||||
*> \author NAG Ltd. | ||||
* | ||||
*> \date November 2017 | ||||
* | ||||
*> \ingroup complex_blas_level1 | ||||
* | ||||
*> \par Further Details: | ||||
* ===================== | ||||
*> | ||||
*> \verbatim | ||||
*> | ||||
*> jack dongarra, linpack, 3/11/78. | ||||
*> modified 12/3/93, array(1) declarations changed to array(*) | ||||
*> \endverbatim | ||||
*> | ||||
* ===================================================================== | ||||
COMPLEX FUNCTION CDOTU(N,CX,INCX,CY,INCY) | ||||
* | ||||
* -- Reference BLAS level1 routine (version 3.8.0) -- | ||||
* -- Reference BLAS is a software package provided by Univ. of Tennessee, -- | ||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- | ||||
* November 2017 | ||||
* | ||||
* .. Scalar Arguments .. | ||||
INTEGER INCX,INCY,N | ||||
* .. | ||||
* .. Array Arguments .. | ||||
COMPLEX CX(*),CY(*) | ||||
* .. | ||||
* | ||||
* ===================================================================== | ||||
* | ||||
* .. Local Scalars .. | ||||
COMPLEX CTEMP | ||||
INTEGER I,IX,IY | ||||
* .. | ||||
CTEMP = (0.0,0.0) | ||||
CDOTU = (0.0,0.0) | ||||
IF (N.LE.0) RETURN | ||||
IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN | ||||
* | ||||
* code for both increments equal to 1 | ||||
* | ||||
DO I = 1,N | ||||
CTEMP = CTEMP + CX(I)*CY(I) | ||||
END DO | ||||
ELSE | ||||
* | ||||
* code for unequal increments or equal increments | ||||
* not equal to 1 | ||||
* | ||||
IX = 1 | ||||
IY = 1 | ||||
IF (INCX.LT.0) IX = (-N+1)*INCX + 1 | ||||
IF (INCY.LT.0) IY = (-N+1)*INCY + 1 | ||||
DO I = 1,N | ||||
CTEMP = CTEMP + CX(IX)*CY(IY) | ||||
IX = IX + INCX | ||||
IY = IY + INCY | ||||
END DO | ||||
END IF | ||||
CDOTU = CTEMP | ||||
RETURN | ||||
END | ||||