1 DOUBLE PRECISION FUNCTION ZLANGT( 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 COMPLEX*16 D( * ), DL( * ), DU( * )
14 * ..
15 *
16 * Purpose
17 * =======
18 *
19 * ZLANGT 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 * complex tridiagonal matrix A.
22 *
23 * Description
24 * ===========
25 *
26 * ZLANGT returns the value
27 *
28 * ZLANGT = ( 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 ZLANGT as described
46 * above.
47 *
48 * N (input) INTEGER
49 * The order of the matrix A. N >= 0. When N = 0, ZLANGT is
50 * set to zero.
51 *
52 * DL (input) COMPLEX*16 array, dimension (N-1)
53 * The (n-1) sub-diagonal elements of A.
54 *
55 * D (input) COMPLEX*16 array, dimension (N)
56 * The diagonal elements of A.
57 *
58 * DU (input) COMPLEX*16 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 ZLASSQ
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 ZLASSQ( N, D, 1, SCALE, SUM )
130 IF( N.GT.1 ) THEN
131 CALL ZLASSQ( N-1, DL, 1, SCALE, SUM )
132 CALL ZLASSQ( N-1, DU, 1, SCALE, SUM )
133 END IF
134 ANORM = SCALE*SQRT( SUM )
135 END IF
136 *
137 ZLANGT = ANORM
138 RETURN
139 *
140 * End of ZLANGT
141 *
142 END
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 COMPLEX*16 D( * ), DL( * ), DU( * )
14 * ..
15 *
16 * Purpose
17 * =======
18 *
19 * ZLANGT 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 * complex tridiagonal matrix A.
22 *
23 * Description
24 * ===========
25 *
26 * ZLANGT returns the value
27 *
28 * ZLANGT = ( 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 ZLANGT as described
46 * above.
47 *
48 * N (input) INTEGER
49 * The order of the matrix A. N >= 0. When N = 0, ZLANGT is
50 * set to zero.
51 *
52 * DL (input) COMPLEX*16 array, dimension (N-1)
53 * The (n-1) sub-diagonal elements of A.
54 *
55 * D (input) COMPLEX*16 array, dimension (N)
56 * The diagonal elements of A.
57 *
58 * DU (input) COMPLEX*16 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 ZLASSQ
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 ZLASSQ( N, D, 1, SCALE, SUM )
130 IF( N.GT.1 ) THEN
131 CALL ZLASSQ( N-1, DL, 1, SCALE, SUM )
132 CALL ZLASSQ( N-1, DU, 1, SCALE, SUM )
133 END IF
134 ANORM = SCALE*SQRT( SUM )
135 END IF
136 *
137 ZLANGT = ANORM
138 RETURN
139 *
140 * End of ZLANGT
141 *
142 END