File:
[local] /
rpl /
lapack /
lapack /
zlange.f
Revision
1.7:
download - view:
text,
annotated -
select for diffs -
revision graph
Tue Dec 21 13:53:50 2010 UTC (13 years, 9 months ago) by
bertrand
Branches:
MAIN
CVS tags:
rpl-4_1_3,
rpl-4_1_2,
rpl-4_1_1,
rpl-4_1_0,
rpl-4_0_24,
rpl-4_0_22,
rpl-4_0_21,
rpl-4_0_20,
rpl-4_0,
HEAD
Mise à jour de lapack vers la version 3.3.0.
1: DOUBLE PRECISION FUNCTION ZLANGE( NORM, M, N, A, LDA, WORK )
2: *
3: * -- LAPACK auxiliary routine (version 3.2) --
4: * -- LAPACK is a software package provided by Univ. of Tennessee, --
5: * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
6: * November 2006
7: *
8: * .. Scalar Arguments ..
9: CHARACTER NORM
10: INTEGER LDA, M, N
11: * ..
12: * .. Array Arguments ..
13: DOUBLE PRECISION WORK( * )
14: COMPLEX*16 A( LDA, * )
15: * ..
16: *
17: * Purpose
18: * =======
19: *
20: * ZLANGE returns the value of the one norm, or the Frobenius norm, or
21: * the infinity norm, or the element of largest absolute value of a
22: * complex matrix A.
23: *
24: * Description
25: * ===========
26: *
27: * ZLANGE returns the value
28: *
29: * ZLANGE = ( max(abs(A(i,j))), NORM = 'M' or 'm'
30: * (
31: * ( norm1(A), NORM = '1', 'O' or 'o'
32: * (
33: * ( normI(A), NORM = 'I' or 'i'
34: * (
35: * ( normF(A), NORM = 'F', 'f', 'E' or 'e'
36: *
37: * where norm1 denotes the one norm of a matrix (maximum column sum),
38: * normI denotes the infinity norm of a matrix (maximum row sum) and
39: * normF denotes the Frobenius norm of a matrix (square root of sum of
40: * squares). Note that max(abs(A(i,j))) is not a consistent matrix norm.
41: *
42: * Arguments
43: * =========
44: *
45: * NORM (input) CHARACTER*1
46: * Specifies the value to be returned in ZLANGE as described
47: * above.
48: *
49: * M (input) INTEGER
50: * The number of rows of the matrix A. M >= 0. When M = 0,
51: * ZLANGE is set to zero.
52: *
53: * N (input) INTEGER
54: * The number of columns of the matrix A. N >= 0. When N = 0,
55: * ZLANGE is set to zero.
56: *
57: * A (input) COMPLEX*16 array, dimension (LDA,N)
58: * The m by n matrix A.
59: *
60: * LDA (input) INTEGER
61: * The leading dimension of the array A. LDA >= max(M,1).
62: *
63: * WORK (workspace) DOUBLE PRECISION array, dimension (MAX(1,LWORK)),
64: * where LWORK >= M when NORM = 'I'; otherwise, WORK is not
65: * referenced.
66: *
67: * =====================================================================
68: *
69: * .. Parameters ..
70: DOUBLE PRECISION ONE, ZERO
71: PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
72: * ..
73: * .. Local Scalars ..
74: INTEGER I, J
75: DOUBLE PRECISION SCALE, SUM, VALUE
76: * ..
77: * .. External Functions ..
78: LOGICAL LSAME
79: EXTERNAL LSAME
80: * ..
81: * .. External Subroutines ..
82: EXTERNAL ZLASSQ
83: * ..
84: * .. Intrinsic Functions ..
85: INTRINSIC ABS, MAX, MIN, SQRT
86: * ..
87: * .. Executable Statements ..
88: *
89: IF( MIN( M, N ).EQ.0 ) THEN
90: VALUE = ZERO
91: ELSE IF( LSAME( NORM, 'M' ) ) THEN
92: *
93: * Find max(abs(A(i,j))).
94: *
95: VALUE = ZERO
96: DO 20 J = 1, N
97: DO 10 I = 1, M
98: VALUE = MAX( VALUE, ABS( A( I, J ) ) )
99: 10 CONTINUE
100: 20 CONTINUE
101: ELSE IF( ( LSAME( NORM, 'O' ) ) .OR. ( NORM.EQ.'1' ) ) THEN
102: *
103: * Find norm1(A).
104: *
105: VALUE = ZERO
106: DO 40 J = 1, N
107: SUM = ZERO
108: DO 30 I = 1, M
109: SUM = SUM + ABS( A( I, J ) )
110: 30 CONTINUE
111: VALUE = MAX( VALUE, SUM )
112: 40 CONTINUE
113: ELSE IF( LSAME( NORM, 'I' ) ) THEN
114: *
115: * Find normI(A).
116: *
117: DO 50 I = 1, M
118: WORK( I ) = ZERO
119: 50 CONTINUE
120: DO 70 J = 1, N
121: DO 60 I = 1, M
122: WORK( I ) = WORK( I ) + ABS( A( I, J ) )
123: 60 CONTINUE
124: 70 CONTINUE
125: VALUE = ZERO
126: DO 80 I = 1, M
127: VALUE = MAX( VALUE, WORK( I ) )
128: 80 CONTINUE
129: ELSE IF( ( LSAME( NORM, 'F' ) ) .OR. ( LSAME( NORM, 'E' ) ) ) THEN
130: *
131: * Find normF(A).
132: *
133: SCALE = ZERO
134: SUM = ONE
135: DO 90 J = 1, N
136: CALL ZLASSQ( M, A( 1, J ), 1, SCALE, SUM )
137: 90 CONTINUE
138: VALUE = SCALE*SQRT( SUM )
139: END IF
140: *
141: ZLANGE = VALUE
142: RETURN
143: *
144: * End of ZLANGE
145: *
146: END
CVSweb interface <joel.bertrand@systella.fr>