3 * =========== DOCUMENTATION ===========
5 * Online html documentation available at
6 * http://www.netlib.org/lapack/explore-html/
11 * DOUBLE PRECISION FUNCTION DNRM2(N,X,INCX)
13 * .. Scalar Arguments ..
16 * .. Array Arguments ..
17 * DOUBLE PRECISION X(*)
26 *> DNRM2 returns the euclidean norm of a vector via the function
29 *> DNRM2 := sqrt( x'*x )
35 *> \author Univ. of Tennessee
36 *> \author Univ. of California Berkeley
37 *> \author Univ. of Colorado Denver
40 *> \date November 2011
42 *> \ingroup double_blas_level1
44 *> \par Further Details:
45 * =====================
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.
54 * =====================================================================
55 DOUBLE PRECISION FUNCTION DNRM2(N,X,INCX)
57 * -- Reference BLAS level1 routine (version 3.4.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..--
62 * .. Scalar Arguments ..
65 * .. Array Arguments ..
69 * =====================================================================
72 DOUBLE PRECISION ONE,ZERO
73 PARAMETER (ONE=1.0D+0,ZERO=0.0D+0)
76 DOUBLE PRECISION ABSXI,NORM,SCALE,SSQ
79 * .. Intrinsic Functions ..
82 IF (N.LT.1 .OR. INCX.LT.1) THEN
89 * The following loop is equivalent to this call to the LAPACK
91 * CALL DLASSQ( N, X, INCX, SCALE, SSQ )
93 DO 10 IX = 1,1 + (N-1)*INCX,INCX
94 IF (X(IX).NE.ZERO) THEN
96 IF (SCALE.LT.ABSXI) THEN
97 SSQ = ONE + SSQ* (SCALE/ABSXI)**2
100 SSQ = SSQ + (ABSXI/SCALE)**2
104 NORM = SCALE*SQRT(SSQ)