SNRM2(3S)SNRM2(3S)NAME
SNRM2, DNRM2, SCNRM2, DZNRM2 - Computes the Euclidean norm of a vector
SYNOPSIS
Single precision
Fortran:
real SNRM2
real enrm
enrm = SNRM2 (n, x, incx)
C/C++:
#include <scsl_blas.h>
float snrm2 (int n, float *x, int incx);
Double precision
Fortran:
double precision DNRM2
double precision enrm
enrm = DNRM2 (n, xi, incx)
C/C++:
#include <scsl_blas.h>
double dnrm2 (int n, double *x, int incx);
Single precision complex
Fortran:
real SCNRM2
real enrm
enrm = SCNRM2 (n, x, incx)
C/C++:
#include <scsl_blas.h>
float scnrm2 (int n, scsl_complex *x, int incx);
C++ STL:
#include <complex.h>
#include <scsl_blas.h>
float scnrm2 (int n, complex<float> *x, int incx);
Double precision complex
Fortran:
double precision DZNRM2
double precision enrm
enrm = DZNRM2 (n, xi, incx)
C/C++:
#include <scsl_blas.h>
double dznrm2 (int n, scsl_zomplex *x, int incx);
Page 1
SNRM2(3S)SNRM2(3S)
C++ STL:
#include <complex.h>
#include <scsl_blas.h>
double dznrm2 (int n, complex<double> *x, int incx);
IMPLEMENTATION
These routines are part of the SCSL Scientific Library and can be loaded
using either the -lscs or the -lscs_mp option. The -lscs_mp option
directs the linker to use the multi-processor version of the library.
When linking to SCSL with -lscs or -lscs_mp, the default integer size is
4 bytes (32 bits). Another version of SCSL is available in which integers
are 8 bytes (64 bits). This version allows the user access to larger
memory sizes and helps when porting legacy Cray codes. It can be loaded
by using the -lscs_i8 option or the -lscs_i8_mp option. A program may use
only one of the two versions; 4-byte integer and 8-byte integer library
calls cannot be mixed.
The C and C++ prototypes shown above are appropriate for the 4-byte
integer version of SCSL. When using the 8-byte integer version, the
variables of type int become long long and the <scsl_blas_i8.h> header
file should be included.
DESCRIPTION
SNRM2/DNRM2 computes the Euclidean (l2) norm of a real vector, as
follows:
enrm <- ||x|| =
2
T n 2
sqrt (x x) = sqrt (Sum * x )
i=1 i
where x is a real vector, and xT denotes the transpose of x.
SCNRM2/DZNRM2 computes the Euclidean (l2) norm of a complex vector, as
follows:
enrm <- ||x|| =
2
H n _
sqrt (x x) = sqrt (Sum x x )
i=1 i i
where x is a complex vector, and xH denotes the conjugate transpose of x.
Page 2
SNRM2(3S)SNRM2(3S)
See the NOTES section of this man page for information about the
interpretation of the data types described in the following arguments.
These functions have the following arguments:
enrm Result. (output)
SNRM2: Single precision result.
DNRM2: Double precision result.
SCNRM2: Single precision complex result.
DZNRM2: Double precision complex result.
Result (Euclidean norm). If n <= 0, enrm is set to 0.
n Integer. (input)
Number of elements in the operand vector.
x Array of dimension (n-1) * |incx| + 1. (input)
SNRM2: Single precision array.
DNRM2: Double precision array.
SCNRM2: Single precision complex array.
DZNRM2: Double precision complex array.
Array x contains the operand vector.
incx Integer. (input)
Increment between elements of x. If incx = 0, the results will
be unpredictable.
NOTES
These routines are Level 1 Basic Linear Algebra Subprograms (Level 1
BLAS).
When working backward (incx < 0), each routine starts at the end of the
vector and moves backward, as follows:
x(1-incx * (n-1)), x(1-incx * (n-2)), ..., x(1)
Data Types
The following data types are described in this documentation:
Term Used Data type
Fortran:
Array dimensioned n x(n)
Integer INTEGER (INTEGER*8 for -lscs_i8[_mp])
Single precision REAL
Double precision DOUBLE PRECISION
Page 3
SNRM2(3S)SNRM2(3S)
Single precision complex COMPLEX
Double precision complex DOUBLE COMPLEX
C/C++:
Array dimensioned n x[n]
Integer int (long long for -lscs_i8[_mp])
Single precision float
Double precision double
Single precision complex scsl_complex
Double precision complex scsl_zomplex
C++ STL:
Array dimensioned n x[n]
Integer int (long long for -lscs_i8[_mp])
Single precision float
Double precision double
Single precision complex complex<float>
Double precision complex complex<double>
SEE ALSOINTRO_SCSL(3S), INTRO_BLAS1(3S)INTRO_CBLAS(3S) for information about using the C interface to Fortran 77
Basic Linear Algebra Subprograms (legacy BLAS) set forth by the Basic
Linear Algebra Subprograms Technical Forum.
Page 4