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