Annotation of rpl/lapack/blas/dznrm2.f, revision 1.1

1.1     ! bertrand    1:       DOUBLE PRECISION FUNCTION DZNRM2(N,X,INCX)
        !             2: *     .. Scalar Arguments ..
        !             3:       INTEGER INCX,N
        !             4: *     ..
        !             5: *     .. Array Arguments ..
        !             6:       DOUBLE COMPLEX X(*)
        !             7: *     ..
        !             8: *
        !             9: *  Purpose
        !            10: *  =======
        !            11: *
        !            12: *  DZNRM2 returns the euclidean norm of a vector via the function
        !            13: *  name, so that
        !            14: *
        !            15: *     DZNRM2 := sqrt( conjg( x' )*x )
        !            16: *
        !            17: *  Further Details
        !            18: *  ===============
        !            19: *
        !            20: *  -- This version written on 25-October-1982.
        !            21: *     Modified on 14-October-1993 to inline the call to ZLASSQ.
        !            22: *     Sven Hammarling, Nag Ltd.
        !            23: *
        !            24: *  =====================================================================
        !            25: *
        !            26: *     .. Parameters ..
        !            27:       DOUBLE PRECISION ONE,ZERO
        !            28:       PARAMETER (ONE=1.0D+0,ZERO=0.0D+0)
        !            29: *     ..
        !            30: *     .. Local Scalars ..
        !            31:       DOUBLE PRECISION NORM,SCALE,SSQ,TEMP
        !            32:       INTEGER IX
        !            33: *     ..
        !            34: *     .. Intrinsic Functions ..
        !            35:       INTRINSIC ABS,DBLE,DIMAG,SQRT
        !            36: *     ..
        !            37:       IF (N.LT.1 .OR. INCX.LT.1) THEN
        !            38:           NORM = ZERO
        !            39:       ELSE
        !            40:           SCALE = ZERO
        !            41:           SSQ = ONE
        !            42: *        The following loop is equivalent to this call to the LAPACK
        !            43: *        auxiliary routine:
        !            44: *        CALL ZLASSQ( N, X, INCX, SCALE, SSQ )
        !            45: *
        !            46:           DO 10 IX = 1,1 + (N-1)*INCX,INCX
        !            47:               IF (DBLE(X(IX)).NE.ZERO) THEN
        !            48:                   TEMP = ABS(DBLE(X(IX)))
        !            49:                   IF (SCALE.LT.TEMP) THEN
        !            50:                       SSQ = ONE + SSQ* (SCALE/TEMP)**2
        !            51:                       SCALE = TEMP
        !            52:                   ELSE
        !            53:                       SSQ = SSQ + (TEMP/SCALE)**2
        !            54:                   END IF
        !            55:               END IF
        !            56:               IF (DIMAG(X(IX)).NE.ZERO) THEN
        !            57:                   TEMP = ABS(DIMAG(X(IX)))
        !            58:                   IF (SCALE.LT.TEMP) THEN
        !            59:                       SSQ = ONE + SSQ* (SCALE/TEMP)**2
        !            60:                       SCALE = TEMP
        !            61:                   ELSE
        !            62:                       SSQ = SSQ + (TEMP/SCALE)**2
        !            63:                   END IF
        !            64:               END IF
        !            65:    10     CONTINUE
        !            66:           NORM = SCALE*SQRT(SSQ)
        !            67:       END IF
        !            68: *
        !            69:       DZNRM2 = NORM
        !            70:       RETURN
        !            71: *
        !            72: *     End of DZNRM2.
        !            73: *
        !            74:       END

CVSweb interface <joel.bertrand@systella.fr>