--- rpl/lapack/blas/dzasum.f 2010/08/13 21:03:40 1.5 +++ rpl/lapack/blas/dzasum.f 2016/08/27 15:37:53 1.13 @@ -1,28 +1,74 @@ +*> \brief \b DZASUM +* +* =========== DOCUMENTATION =========== +* +* Online html documentation available at +* http://www.netlib.org/lapack/explore-html/ +* +* Definition: +* =========== +* +* DOUBLE PRECISION FUNCTION DZASUM(N,ZX,INCX) +* +* .. Scalar Arguments .. +* INTEGER INCX,N +* .. +* .. Array Arguments .. +* COMPLEX*16 ZX(*) +* .. +* +* +*> \par Purpose: +* ============= +*> +*> \verbatim +*> +*> DZASUM takes the sum of the (|Re(.)| + |Im(.)|)'s of a complex vector and +*> returns a single precision result. +*> \endverbatim +* +* Authors: +* ======== +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2015 +* +*> \ingroup double_blas_level1 +* +*> \par Further Details: +* ===================== +*> +*> \verbatim +*> +*> jack dongarra, 3/11/78. +*> modified 3/93 to return if incx .le. 0. +*> modified 12/3/93, array(1) declarations changed to array(*) +*> \endverbatim +*> +* ===================================================================== DOUBLE PRECISION FUNCTION DZASUM(N,ZX,INCX) +* +* -- Reference BLAS level1 routine (version 3.6.0) -- +* -- Reference BLAS is a software package provided by Univ. of Tennessee, -- +* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- +* November 2015 +* * .. Scalar Arguments .. INTEGER INCX,N * .. * .. Array Arguments .. - DOUBLE COMPLEX ZX(*) + COMPLEX*16 ZX(*) * .. * -* Purpose -* ======= -* -* DZASUM takes the sum of the absolute values. -* -* Further Details -* =============== -* -* jack dongarra, 3/11/78. -* modified 3/93 to return if incx .le. 0. -* modified 12/3/93, array(1) declarations changed to array(*) -* * ===================================================================== * * .. Local Scalars .. DOUBLE PRECISION STEMP - INTEGER I,IX + INTEGER I,NINCX * .. * .. External Functions .. DOUBLE PRECISION DCABS1 @@ -31,23 +77,22 @@ DZASUM = 0.0d0 STEMP = 0.0d0 IF (N.LE.0 .OR. INCX.LE.0) RETURN - IF (INCX.EQ.1) GO TO 20 + IF (INCX.EQ.1) THEN * -* code for increment not equal to 1 +* code for increment equal to 1 * - IX = 1 - DO 10 I = 1,N - STEMP = STEMP + DCABS1(ZX(IX)) - IX = IX + INCX - 10 CONTINUE - DZASUM = STEMP - RETURN + DO I = 1,N + STEMP = STEMP + DCABS1(ZX(I)) + END DO + ELSE * -* code for increment equal to 1 +* code for increment not equal to 1 * - 20 DO 30 I = 1,N - STEMP = STEMP + DCABS1(ZX(I)) - 30 CONTINUE + NINCX = N*INCX + DO I = 1,NINCX,INCX + STEMP = STEMP + DCABS1(ZX(I)) + END DO + END IF DZASUM = STEMP RETURN END