File:  [local] / rpl / lapack / blas / dnrm2.f
Revision 1.12: download - view: text, annotated - select for diffs - revision graph
Sat Jun 17 10:53:43 2017 UTC (6 years, 11 months ago) by bertrand
Branches: MAIN
CVS tags: rpl-4_1_27, rpl-4_1_26, HEAD
Mise à jour de lapack.

    1: *> \brief \b DNRM2
    2: *
    3: *  =========== DOCUMENTATION ===========
    4: *
    5: * Online html documentation available at
    6: *            http://www.netlib.org/lapack/explore-html/
    7: *
    8: *  Definition:
    9: *  ===========
   10: *
   11: *       DOUBLE PRECISION FUNCTION DNRM2(N,X,INCX)
   12: *
   13: *       .. Scalar Arguments ..
   14: *       INTEGER INCX,N
   15: *       ..
   16: *       .. Array Arguments ..
   17: *       DOUBLE PRECISION X(*)
   18: *       ..
   19: *
   20: *
   21: *> \par Purpose:
   22: *  =============
   23: *>
   24: *> \verbatim
   25: *>
   26: *> DNRM2 returns the euclidean norm of a vector via the function
   27: *> name, so that
   28: *>
   29: *>    DNRM2 := sqrt( x'*x )
   30: *> \endverbatim
   31: *
   32: *  Authors:
   33: *  ========
   34: *
   35: *> \author Univ. of Tennessee
   36: *> \author Univ. of California Berkeley
   37: *> \author Univ. of Colorado Denver
   38: *> \author NAG Ltd.
   39: *
   40: *> \date December 2016
   41: *
   42: *> \ingroup double_blas_level1
   43: *
   44: *> \par Further Details:
   45: *  =====================
   46: *>
   47: *> \verbatim
   48: *>
   49: *>  -- This version written on 25-October-1982.
   50: *>     Modified on 14-October-1993 to inline the call to DLASSQ.
   51: *>     Sven Hammarling, Nag Ltd.
   52: *> \endverbatim
   53: *>
   54: *  =====================================================================
   55:       DOUBLE PRECISION FUNCTION DNRM2(N,X,INCX)
   56: *
   57: *  -- Reference BLAS level1 routine (version 3.7.0) --
   58: *  -- Reference BLAS is a software package provided by Univ. of Tennessee,    --
   59: *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
   60: *     December 2016
   61: *
   62: *     .. Scalar Arguments ..
   63:       INTEGER INCX,N
   64: *     ..
   65: *     .. Array Arguments ..
   66:       DOUBLE PRECISION X(*)
   67: *     ..
   68: *
   69: *  =====================================================================
   70: *
   71: *     .. Parameters ..
   72:       DOUBLE PRECISION ONE,ZERO
   73:       PARAMETER (ONE=1.0D+0,ZERO=0.0D+0)
   74: *     ..
   75: *     .. Local Scalars ..
   76:       DOUBLE PRECISION ABSXI,NORM,SCALE,SSQ
   77:       INTEGER IX
   78: *     ..
   79: *     .. Intrinsic Functions ..
   80:       INTRINSIC ABS,SQRT
   81: *     ..
   82:       IF (N.LT.1 .OR. INCX.LT.1) THEN
   83:           NORM = ZERO
   84:       ELSE IF (N.EQ.1) THEN
   85:           NORM = ABS(X(1))
   86:       ELSE
   87:           SCALE = ZERO
   88:           SSQ = ONE
   89: *        The following loop is equivalent to this call to the LAPACK
   90: *        auxiliary routine:
   91: *        CALL DLASSQ( N, X, INCX, SCALE, SSQ )
   92: *
   93:           DO 10 IX = 1,1 + (N-1)*INCX,INCX
   94:               IF (X(IX).NE.ZERO) THEN
   95:                   ABSXI = ABS(X(IX))
   96:                   IF (SCALE.LT.ABSXI) THEN
   97:                       SSQ = ONE + SSQ* (SCALE/ABSXI)**2
   98:                       SCALE = ABSXI
   99:                   ELSE
  100:                       SSQ = SSQ + (ABSXI/SCALE)**2
  101:                   END IF
  102:               END IF
  103:    10     CONTINUE
  104:           NORM = SCALE*SQRT(SSQ)
  105:       END IF
  106: *
  107:       DNRM2 = NORM
  108:       RETURN
  109: *
  110: *     End of DNRM2.
  111: *
  112:       END

CVSweb interface <joel.bertrand@systella.fr>