|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- *> \brief \b SNRM2
- *
- * =========== DOCUMENTATION ===========
- *
- * Online html documentation available at
- * http://www.netlib.org/lapack/explore-html/
- *
- * Definition:
- * ===========
- *
- * REAL FUNCTION SNRM2(N,X,INCX)
- *
- * .. Scalar Arguments ..
- * INTEGER INCX,N
- * ..
- * .. Array Arguments ..
- * REAL X(*)
- * ..
- *
- *
- *> \par Purpose:
- * =============
- *>
- *> \verbatim
- *>
- *> SNRM2 returns the euclidean norm of a vector via the function
- *> name, so that
- *>
- *> SNRM2 := sqrt( x'*x ).
- *> \endverbatim
- *
- * Arguments:
- * ==========
- *
- *> \param[in] N
- *> \verbatim
- *> N is INTEGER
- *> number of elements in input vector(s)
- *> \endverbatim
- *>
- *> \param[in] X
- *> \verbatim
- *> X is REAL array, dimension ( 1 + ( N - 1 )*abs( INCX ) )
- *> \endverbatim
- *>
- *> \param[in] INCX
- *> \verbatim
- *> INCX is INTEGER
- *> storage spacing between elements of SX
- *> \endverbatim
- *
- * Authors:
- * ========
- *
- *> \author Univ. of Tennessee
- *> \author Univ. of California Berkeley
- *> \author Univ. of Colorado Denver
- *> \author NAG Ltd.
- *
- *> \date November 2017
- *
- *> \ingroup single_blas_level1
- *
- *> \par Further Details:
- * =====================
- *>
- *> \verbatim
- *>
- *> -- This version written on 25-October-1982.
- *> Modified on 14-October-1993 to inline the call to SLASSQ.
- *> Sven Hammarling, Nag Ltd.
- *> \endverbatim
- *>
- * =====================================================================
- REAL FUNCTION SNRM2(N,X,INCX)
- *
- * -- Reference BLAS level1 routine (version 3.8.0) --
- * -- Reference BLAS is a software package provided by Univ. of Tennessee, --
- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
- * November 2017
- *
- * .. Scalar Arguments ..
- INTEGER INCX,N
- * ..
- * .. Array Arguments ..
- REAL X(*)
- * ..
- *
- * =====================================================================
- *
- * .. Parameters ..
- REAL ONE,ZERO
- PARAMETER (ONE=1.0E+0,ZERO=0.0E+0)
- * ..
- * .. Local Scalars ..
- REAL ABSXI,NORM,SCALE,SSQ
- INTEGER IX
- * ..
- * .. Intrinsic Functions ..
- INTRINSIC ABS,SQRT
- * ..
- IF (N.LT.1 .OR. INCX.LT.1) THEN
- NORM = ZERO
- ELSE IF (N.EQ.1) THEN
- NORM = ABS(X(1))
- ELSE
- SCALE = ZERO
- SSQ = ONE
- * The following loop is equivalent to this call to the LAPACK
- * auxiliary routine:
- * CALL SLASSQ( N, X, INCX, SCALE, SSQ )
- *
- DO 10 IX = 1,1 + (N-1)*INCX,INCX
- IF (X(IX).NE.ZERO) THEN
- ABSXI = ABS(X(IX))
- IF (SCALE.LT.ABSXI) THEN
- SSQ = ONE + SSQ* (SCALE/ABSXI)**2
- SCALE = ABSXI
- ELSE
- SSQ = SSQ + (ABSXI/SCALE)**2
- END IF
- END IF
- 10 CONTINUE
- NORM = SCALE*SQRT(SSQ)
- END IF
- *
- SNRM2 = NORM
- RETURN
- *
- * End of SNRM2.
- *
- END
|