1
DOUBLE PRECISION FUNCTION DNRM2(N,X,INCX)
2
* .. Scalar Arguments ..
5
* .. Array Arguments ..
12
* DNRM2 returns the euclidean norm of a vector via the function
15
* DNRM2 := sqrt( x'*x )
18
* -- This version written on 25-October-1982.
19
* Modified on 14-October-1993 to inline the call to DLASSQ.
20
* Sven Hammarling, Nag Ltd.
24
DOUBLE PRECISION ONE,ZERO
25
PARAMETER (ONE=1.0D+0,ZERO=0.0D+0)
28
DOUBLE PRECISION ABSXI,NORM,SCALE,SSQ
31
* .. Intrinsic Functions ..
34
IF (N.LT.1 .OR. INCX.LT.1) THEN
41
* The following loop is equivalent to this call to the LAPACK
43
* CALL DLASSQ( N, X, INCX, SCALE, SSQ )
45
DO 10 IX = 1,1 + (N-1)*INCX,INCX
46
IF (X(IX).NE.ZERO) THEN
48
IF (SCALE.LT.ABSXI) THEN
49
SSQ = ONE + SSQ* (SCALE/ABSXI)**2
52
SSQ = SSQ + (ABSXI/SCALE)**2
56
NORM = SCALE*SQRT(SSQ)