File:
[local] /
rpl /
lapack /
lapack /
dlangt.f
Revision
1.7:
download - view:
text,
annotated -
select for diffs -
revision graph
Tue Dec 21 13:53:30 2010 UTC (13 years, 6 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 DLANGT( NORM, N, DL, D, DU )
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 N
11: * ..
12: * .. Array Arguments ..
13: DOUBLE PRECISION D( * ), DL( * ), DU( * )
14: * ..
15: *
16: * Purpose
17: * =======
18: *
19: * DLANGT returns the value of the one norm, or the Frobenius norm, or
20: * the infinity norm, or the element of largest absolute value of a
21: * real tridiagonal matrix A.
22: *
23: * Description
24: * ===========
25: *
26: * DLANGT returns the value
27: *
28: * DLANGT = ( max(abs(A(i,j))), NORM = 'M' or 'm'
29: * (
30: * ( norm1(A), NORM = '1', 'O' or 'o'
31: * (
32: * ( normI(A), NORM = 'I' or 'i'
33: * (
34: * ( normF(A), NORM = 'F', 'f', 'E' or 'e'
35: *
36: * where norm1 denotes the one norm of a matrix (maximum column sum),
37: * normI denotes the infinity norm of a matrix (maximum row sum) and
38: * normF denotes the Frobenius norm of a matrix (square root of sum of
39: * squares). Note that max(abs(A(i,j))) is not a consistent matrix norm.
40: *
41: * Arguments
42: * =========
43: *
44: * NORM (input) CHARACTER*1
45: * Specifies the value to be returned in DLANGT as described
46: * above.
47: *
48: * N (input) INTEGER
49: * The order of the matrix A. N >= 0. When N = 0, DLANGT is
50: * set to zero.
51: *
52: * DL (input) DOUBLE PRECISION array, dimension (N-1)
53: * The (n-1) sub-diagonal elements of A.
54: *
55: * D (input) DOUBLE PRECISION array, dimension (N)
56: * The diagonal elements of A.
57: *
58: * DU (input) DOUBLE PRECISION array, dimension (N-1)
59: * The (n-1) super-diagonal elements of A.
60: *
61: * =====================================================================
62: *
63: * .. Parameters ..
64: DOUBLE PRECISION ONE, ZERO
65: PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
66: * ..
67: * .. Local Scalars ..
68: INTEGER I
69: DOUBLE PRECISION ANORM, SCALE, SUM
70: * ..
71: * .. External Functions ..
72: LOGICAL LSAME
73: EXTERNAL LSAME
74: * ..
75: * .. External Subroutines ..
76: EXTERNAL DLASSQ
77: * ..
78: * .. Intrinsic Functions ..
79: INTRINSIC ABS, MAX, SQRT
80: * ..
81: * .. Executable Statements ..
82: *
83: IF( N.LE.0 ) THEN
84: ANORM = ZERO
85: ELSE IF( LSAME( NORM, 'M' ) ) THEN
86: *
87: * Find max(abs(A(i,j))).
88: *
89: ANORM = ABS( D( N ) )
90: DO 10 I = 1, N - 1
91: ANORM = MAX( ANORM, ABS( DL( I ) ) )
92: ANORM = MAX( ANORM, ABS( D( I ) ) )
93: ANORM = MAX( ANORM, ABS( DU( I ) ) )
94: 10 CONTINUE
95: ELSE IF( LSAME( NORM, 'O' ) .OR. NORM.EQ.'1' ) THEN
96: *
97: * Find norm1(A).
98: *
99: IF( N.EQ.1 ) THEN
100: ANORM = ABS( D( 1 ) )
101: ELSE
102: ANORM = MAX( ABS( D( 1 ) )+ABS( DL( 1 ) ),
103: $ ABS( D( N ) )+ABS( DU( N-1 ) ) )
104: DO 20 I = 2, N - 1
105: ANORM = MAX( ANORM, ABS( D( I ) )+ABS( DL( I ) )+
106: $ ABS( DU( I-1 ) ) )
107: 20 CONTINUE
108: END IF
109: ELSE IF( LSAME( NORM, 'I' ) ) THEN
110: *
111: * Find normI(A).
112: *
113: IF( N.EQ.1 ) THEN
114: ANORM = ABS( D( 1 ) )
115: ELSE
116: ANORM = MAX( ABS( D( 1 ) )+ABS( DU( 1 ) ),
117: $ ABS( D( N ) )+ABS( DL( N-1 ) ) )
118: DO 30 I = 2, N - 1
119: ANORM = MAX( ANORM, ABS( D( I ) )+ABS( DU( I ) )+
120: $ ABS( DL( I-1 ) ) )
121: 30 CONTINUE
122: END IF
123: ELSE IF( ( LSAME( NORM, 'F' ) ) .OR. ( LSAME( NORM, 'E' ) ) ) THEN
124: *
125: * Find normF(A).
126: *
127: SCALE = ZERO
128: SUM = ONE
129: CALL DLASSQ( N, D, 1, SCALE, SUM )
130: IF( N.GT.1 ) THEN
131: CALL DLASSQ( N-1, DL, 1, SCALE, SUM )
132: CALL DLASSQ( N-1, DU, 1, SCALE, SUM )
133: END IF
134: ANORM = SCALE*SQRT( SUM )
135: END IF
136: *
137: DLANGT = ANORM
138: RETURN
139: *
140: * End of DLANGT
141: *
142: END
CVSweb interface <joel.bertrand@systella.fr>