LAPACK 3.12.1
LAPACK: Linear Algebra PACKage
Loading...
Searching...
No Matches
dlange.f
Go to the documentation of this file.
1*> \brief \b DLANGE returns the value of the 1-norm, Frobenius norm, infinity-norm, or the largest absolute value of any element of a general rectangular matrix.
2*
3* =========== DOCUMENTATION ===========
4*
5* Online html documentation available at
6* http://www.netlib.org/lapack/explore-html/
7*
8*> Download DLANGE + dependencies
9*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dlange.f">
10*> [TGZ]</a>
11*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dlange.f">
12*> [ZIP]</a>
13*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dlange.f">
14*> [TXT]</a>
15*
16* Definition:
17* ===========
18*
19* DOUBLE PRECISION FUNCTION DLANGE( NORM, M, N, A, LDA, WORK )
20*
21* .. Scalar Arguments ..
22* CHARACTER NORM
23* INTEGER LDA, M, N
24* ..
25* .. Array Arguments ..
26* DOUBLE PRECISION A( LDA, * ), WORK( * )
27* ..
28*
29*
30*> \par Purpose:
31* =============
32*>
33*> \verbatim
34*>
35*> DLANGE returns the value of the one norm, or the Frobenius norm, or
36*> the infinity norm, or the element of largest absolute value of a
37*> real matrix A.
38*> \endverbatim
39*>
40*> \return DLANGE
41*> \verbatim
42*>
43*> DLANGE = ( max(abs(A(i,j))), NORM = 'M' or 'm'
44*> (
45*> ( norm1(A), NORM = '1', 'O' or 'o'
46*> (
47*> ( normI(A), NORM = 'I' or 'i'
48*> (
49*> ( normF(A), NORM = 'F', 'f', 'E' or 'e'
50*>
51*> where norm1 denotes the one norm of a matrix (maximum column sum),
52*> normI denotes the infinity norm of a matrix (maximum row sum) and
53*> normF denotes the Frobenius norm of a matrix (square root of sum of
54*> squares). Note that max(abs(A(i,j))) is not a consistent matrix norm.
55*> \endverbatim
56*
57* Arguments:
58* ==========
59*
60*> \param[in] NORM
61*> \verbatim
62*> NORM is CHARACTER*1
63*> Specifies the value to be returned in DLANGE as described
64*> above.
65*> \endverbatim
66*>
67*> \param[in] M
68*> \verbatim
69*> M is INTEGER
70*> The number of rows of the matrix A. M >= 0. When M = 0,
71*> DLANGE is set to zero.
72*> \endverbatim
73*>
74*> \param[in] N
75*> \verbatim
76*> N is INTEGER
77*> The number of columns of the matrix A. N >= 0. When N = 0,
78*> DLANGE is set to zero.
79*> \endverbatim
80*>
81*> \param[in] A
82*> \verbatim
83*> A is DOUBLE PRECISION array, dimension (LDA,N)
84*> The m by n matrix A.
85*> \endverbatim
86*>
87*> \param[in] LDA
88*> \verbatim
89*> LDA is INTEGER
90*> The leading dimension of the array A. LDA >= max(M,1).
91*> \endverbatim
92*>
93*> \param[out] WORK
94*> \verbatim
95*> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)),
96*> where LWORK >= M when NORM = 'I'; otherwise, WORK is not
97*> referenced.
98*> \endverbatim
99*
100* Authors:
101* ========
102*
103*> \author Univ. of Tennessee
104*> \author Univ. of California Berkeley
105*> \author Univ. of Colorado Denver
106*> \author NAG Ltd.
107*
108*> \ingroup lange
109*
110* =====================================================================
111 DOUBLE PRECISION FUNCTION dlange( NORM, M, N, A, LDA, WORK )
112*
113* -- LAPACK auxiliary routine --
114* -- LAPACK is a software package provided by Univ. of Tennessee, --
115* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
116*
117* .. Scalar Arguments ..
118 CHARACTER norm
119 INTEGER lda, m, n
120* ..
121* .. Array Arguments ..
122 DOUBLE PRECISION a( lda, * ), work( * )
123* ..
124*
125* =====================================================================
126*
127* .. Parameters ..
128 DOUBLE PRECISION one, zero
129 parameter( one = 1.0d+0, zero = 0.0d+0 )
130* ..
131* .. Local Scalars ..
132 INTEGER i, j
133 DOUBLE PRECISION scale, sum, VALUE, temp
134* ..
135* .. External Subroutines ..
136 EXTERNAL dlassq
137* ..
138* .. External Functions ..
139 LOGICAL lsame, disnan
140 EXTERNAL lsame, disnan
141* ..
142* .. Intrinsic Functions ..
143 INTRINSIC abs, min, sqrt
144* ..
145* .. Executable Statements ..
146*
147 IF( min( m, n ).EQ.0 ) THEN
148 VALUE = zero
149 ELSE IF( lsame( norm, 'M' ) ) THEN
150*
151* Find max(abs(A(i,j))).
152*
153 VALUE = zero
154 DO 20 j = 1, n
155 DO 10 i = 1, m
156 temp = abs( a( i, j ) )
157 IF( VALUE.LT.temp .OR. disnan( temp ) ) VALUE = temp
158 10 CONTINUE
159 20 CONTINUE
160 ELSE IF( ( lsame( norm, 'O' ) ) .OR. ( norm.EQ.'1' ) ) THEN
161*
162* Find norm1(A).
163*
164 VALUE = zero
165 DO 40 j = 1, n
166 sum = zero
167 DO 30 i = 1, m
168 sum = sum + abs( a( i, j ) )
169 30 CONTINUE
170 IF( VALUE.LT.sum .OR. disnan( sum ) ) VALUE = sum
171 40 CONTINUE
172 ELSE IF( lsame( norm, 'I' ) ) THEN
173*
174* Find normI(A).
175*
176 DO 50 i = 1, m
177 work( i ) = zero
178 50 CONTINUE
179 DO 70 j = 1, n
180 DO 60 i = 1, m
181 work( i ) = work( i ) + abs( a( i, j ) )
182 60 CONTINUE
183 70 CONTINUE
184 VALUE = zero
185 DO 80 i = 1, m
186 temp = work( i )
187 IF( VALUE.LT.temp .OR. disnan( temp ) ) VALUE = temp
188 80 CONTINUE
189 ELSE IF( ( lsame( norm, 'F' ) ) .OR.
190 $ ( lsame( norm, 'E' ) ) ) THEN
191*
192* Find normF(A).
193*
194 scale = zero
195 sum = one
196 DO 90 j = 1, n
197 CALL dlassq( m, a( 1, j ), 1, scale, sum )
198 90 CONTINUE
199 VALUE = scale*sqrt( sum )
200 END IF
201*
202 dlange = VALUE
203 RETURN
204*
205* End of DLANGE
206*
207 END
logical function disnan(din)
DISNAN tests input for NaN.
Definition disnan.f:57
double precision function dlange(norm, m, n, a, lda, work)
DLANGE returns the value of the 1-norm, Frobenius norm, infinity-norm, or the largest absolute value ...
Definition dlange.f:112
subroutine dlassq(n, x, incx, scale, sumsq)
DLASSQ updates a sum of squares represented in scaled form.
Definition dlassq.f90:122
logical function lsame(ca, cb)
LSAME
Definition lsame.f:48