annotate libcruft/lapack/zlantr.f @ 7034:68db500cb558

[project @ 2007-10-16 18:54:19 by jwe]
author jwe
date Tue, 16 Oct 2007 18:54:23 +0000
parents 6c6ff9b82577
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5826
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
1 DOUBLE PRECISION FUNCTION ZLANTR( NORM, UPLO, DIAG, M, N, A, LDA,
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
2 $ WORK )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
3 *
7034
68db500cb558 [project @ 2007-10-16 18:54:19 by jwe]
jwe
parents: 5826
diff changeset
4 * -- LAPACK auxiliary routine (version 3.1) --
68db500cb558 [project @ 2007-10-16 18:54:19 by jwe]
jwe
parents: 5826
diff changeset
5 * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
68db500cb558 [project @ 2007-10-16 18:54:19 by jwe]
jwe
parents: 5826
diff changeset
6 * November 2006
5826
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
7 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
8 * .. Scalar Arguments ..
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
9 CHARACTER DIAG, NORM, UPLO
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
10 INTEGER LDA, M, N
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
11 * ..
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
12 * .. Array Arguments ..
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
13 DOUBLE PRECISION WORK( * )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
14 COMPLEX*16 A( LDA, * )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
15 * ..
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
16 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
17 * Purpose
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
18 * =======
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
19 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
20 * ZLANTR returns the value of the one norm, or the Frobenius norm, or
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
21 * the infinity norm, or the element of largest absolute value of a
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
22 * trapezoidal or triangular matrix A.
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
23 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
24 * Description
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
25 * ===========
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
26 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
27 * ZLANTR returns the value
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
28 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
29 * ZLANTR = ( max(abs(A(i,j))), NORM = 'M' or 'm'
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
30 * (
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
31 * ( norm1(A), NORM = '1', 'O' or 'o'
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
32 * (
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
33 * ( normI(A), NORM = 'I' or 'i'
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
34 * (
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
35 * ( normF(A), NORM = 'F', 'f', 'E' or 'e'
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
36 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
37 * where norm1 denotes the one norm of a matrix (maximum column sum),
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
38 * normI denotes the infinity norm of a matrix (maximum row sum) and
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
39 * normF denotes the Frobenius norm of a matrix (square root of sum of
7034
68db500cb558 [project @ 2007-10-16 18:54:19 by jwe]
jwe
parents: 5826
diff changeset
40 * squares). Note that max(abs(A(i,j))) is not a consistent matrix norm.
5826
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
41 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
42 * Arguments
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
43 * =========
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
44 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
45 * NORM (input) CHARACTER*1
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
46 * Specifies the value to be returned in ZLANTR as described
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
47 * above.
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
48 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
49 * UPLO (input) CHARACTER*1
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
50 * Specifies whether the matrix A is upper or lower trapezoidal.
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
51 * = 'U': Upper trapezoidal
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
52 * = 'L': Lower trapezoidal
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
53 * Note that A is triangular instead of trapezoidal if M = N.
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
54 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
55 * DIAG (input) CHARACTER*1
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
56 * Specifies whether or not the matrix A has unit diagonal.
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
57 * = 'N': Non-unit diagonal
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
58 * = 'U': Unit diagonal
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
59 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
60 * M (input) INTEGER
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
61 * The number of rows of the matrix A. M >= 0, and if
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
62 * UPLO = 'U', M <= N. When M = 0, ZLANTR is set to zero.
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
63 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
64 * N (input) INTEGER
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
65 * The number of columns of the matrix A. N >= 0, and if
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
66 * UPLO = 'L', N <= M. When N = 0, ZLANTR is set to zero.
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
67 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
68 * A (input) COMPLEX*16 array, dimension (LDA,N)
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
69 * The trapezoidal matrix A (A is triangular if M = N).
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
70 * If UPLO = 'U', the leading m by n upper trapezoidal part of
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
71 * the array A contains the upper trapezoidal matrix, and the
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
72 * strictly lower triangular part of A is not referenced.
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
73 * If UPLO = 'L', the leading m by n lower trapezoidal part of
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
74 * the array A contains the lower trapezoidal matrix, and the
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
75 * strictly upper triangular part of A is not referenced. Note
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
76 * that when DIAG = 'U', the diagonal elements of A are not
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
77 * referenced and are assumed to be one.
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
78 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
79 * LDA (input) INTEGER
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
80 * The leading dimension of the array A. LDA >= max(M,1).
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
81 *
7034
68db500cb558 [project @ 2007-10-16 18:54:19 by jwe]
jwe
parents: 5826
diff changeset
82 * WORK (workspace) DOUBLE PRECISION array, dimension (MAX(1,LWORK)),
5826
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
83 * where LWORK >= M when NORM = 'I'; otherwise, WORK is not
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
84 * referenced.
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
85 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
86 * =====================================================================
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
87 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
88 * .. Parameters ..
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
89 DOUBLE PRECISION ONE, ZERO
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
90 PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
91 * ..
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
92 * .. Local Scalars ..
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
93 LOGICAL UDIAG
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
94 INTEGER I, J
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
95 DOUBLE PRECISION SCALE, SUM, VALUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
96 * ..
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
97 * .. External Functions ..
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
98 LOGICAL LSAME
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
99 EXTERNAL LSAME
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
100 * ..
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
101 * .. External Subroutines ..
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
102 EXTERNAL ZLASSQ
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
103 * ..
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
104 * .. Intrinsic Functions ..
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
105 INTRINSIC ABS, MAX, MIN, SQRT
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
106 * ..
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
107 * .. Executable Statements ..
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
108 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
109 IF( MIN( M, N ).EQ.0 ) THEN
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
110 VALUE = ZERO
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
111 ELSE IF( LSAME( NORM, 'M' ) ) THEN
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
112 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
113 * Find max(abs(A(i,j))).
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
114 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
115 IF( LSAME( DIAG, 'U' ) ) THEN
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
116 VALUE = ONE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
117 IF( LSAME( UPLO, 'U' ) ) THEN
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
118 DO 20 J = 1, N
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
119 DO 10 I = 1, MIN( M, J-1 )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
120 VALUE = MAX( VALUE, ABS( A( I, J ) ) )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
121 10 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
122 20 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
123 ELSE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
124 DO 40 J = 1, N
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
125 DO 30 I = J + 1, M
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
126 VALUE = MAX( VALUE, ABS( A( I, J ) ) )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
127 30 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
128 40 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
129 END IF
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
130 ELSE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
131 VALUE = ZERO
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
132 IF( LSAME( UPLO, 'U' ) ) THEN
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
133 DO 60 J = 1, N
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
134 DO 50 I = 1, MIN( M, J )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
135 VALUE = MAX( VALUE, ABS( A( I, J ) ) )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
136 50 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
137 60 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
138 ELSE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
139 DO 80 J = 1, N
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
140 DO 70 I = J, M
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
141 VALUE = MAX( VALUE, ABS( A( I, J ) ) )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
142 70 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
143 80 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
144 END IF
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
145 END IF
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
146 ELSE IF( ( LSAME( NORM, 'O' ) ) .OR. ( NORM.EQ.'1' ) ) THEN
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
147 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
148 * Find norm1(A).
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
149 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
150 VALUE = ZERO
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
151 UDIAG = LSAME( DIAG, 'U' )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
152 IF( LSAME( UPLO, 'U' ) ) THEN
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
153 DO 110 J = 1, N
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
154 IF( ( UDIAG ) .AND. ( J.LE.M ) ) THEN
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
155 SUM = ONE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
156 DO 90 I = 1, J - 1
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
157 SUM = SUM + ABS( A( I, J ) )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
158 90 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
159 ELSE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
160 SUM = ZERO
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
161 DO 100 I = 1, MIN( M, J )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
162 SUM = SUM + ABS( A( I, J ) )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
163 100 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
164 END IF
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
165 VALUE = MAX( VALUE, SUM )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
166 110 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
167 ELSE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
168 DO 140 J = 1, N
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
169 IF( UDIAG ) THEN
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
170 SUM = ONE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
171 DO 120 I = J + 1, M
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
172 SUM = SUM + ABS( A( I, J ) )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
173 120 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
174 ELSE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
175 SUM = ZERO
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
176 DO 130 I = J, M
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
177 SUM = SUM + ABS( A( I, J ) )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
178 130 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
179 END IF
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
180 VALUE = MAX( VALUE, SUM )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
181 140 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
182 END IF
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
183 ELSE IF( LSAME( NORM, 'I' ) ) THEN
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
184 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
185 * Find normI(A).
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
186 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
187 IF( LSAME( UPLO, 'U' ) ) THEN
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
188 IF( LSAME( DIAG, 'U' ) ) THEN
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
189 DO 150 I = 1, M
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
190 WORK( I ) = ONE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
191 150 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
192 DO 170 J = 1, N
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
193 DO 160 I = 1, MIN( M, J-1 )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
194 WORK( I ) = WORK( I ) + ABS( A( I, J ) )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
195 160 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
196 170 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
197 ELSE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
198 DO 180 I = 1, M
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
199 WORK( I ) = ZERO
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
200 180 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
201 DO 200 J = 1, N
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
202 DO 190 I = 1, MIN( M, J )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
203 WORK( I ) = WORK( I ) + ABS( A( I, J ) )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
204 190 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
205 200 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
206 END IF
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
207 ELSE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
208 IF( LSAME( DIAG, 'U' ) ) THEN
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
209 DO 210 I = 1, N
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
210 WORK( I ) = ONE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
211 210 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
212 DO 220 I = N + 1, M
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
213 WORK( I ) = ZERO
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
214 220 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
215 DO 240 J = 1, N
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
216 DO 230 I = J + 1, M
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
217 WORK( I ) = WORK( I ) + ABS( A( I, J ) )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
218 230 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
219 240 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
220 ELSE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
221 DO 250 I = 1, M
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
222 WORK( I ) = ZERO
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
223 250 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
224 DO 270 J = 1, N
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
225 DO 260 I = J, M
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
226 WORK( I ) = WORK( I ) + ABS( A( I, J ) )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
227 260 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
228 270 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
229 END IF
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
230 END IF
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
231 VALUE = ZERO
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
232 DO 280 I = 1, M
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
233 VALUE = MAX( VALUE, WORK( I ) )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
234 280 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
235 ELSE IF( ( LSAME( NORM, 'F' ) ) .OR. ( LSAME( NORM, 'E' ) ) ) THEN
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
236 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
237 * Find normF(A).
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
238 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
239 IF( LSAME( UPLO, 'U' ) ) THEN
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
240 IF( LSAME( DIAG, 'U' ) ) THEN
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
241 SCALE = ONE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
242 SUM = MIN( M, N )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
243 DO 290 J = 2, N
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
244 CALL ZLASSQ( MIN( M, J-1 ), A( 1, J ), 1, SCALE, SUM )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
245 290 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
246 ELSE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
247 SCALE = ZERO
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
248 SUM = ONE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
249 DO 300 J = 1, N
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
250 CALL ZLASSQ( MIN( M, J ), A( 1, J ), 1, SCALE, SUM )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
251 300 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
252 END IF
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
253 ELSE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
254 IF( LSAME( DIAG, 'U' ) ) THEN
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
255 SCALE = ONE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
256 SUM = MIN( M, N )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
257 DO 310 J = 1, N
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
258 CALL ZLASSQ( M-J, A( MIN( M, J+1 ), J ), 1, SCALE,
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
259 $ SUM )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
260 310 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
261 ELSE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
262 SCALE = ZERO
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
263 SUM = ONE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
264 DO 320 J = 1, N
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
265 CALL ZLASSQ( M-J+1, A( J, J ), 1, SCALE, SUM )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
266 320 CONTINUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
267 END IF
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
268 END IF
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
269 VALUE = SCALE*SQRT( SUM )
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
270 END IF
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
271 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
272 ZLANTR = VALUE
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
273 RETURN
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
274 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
275 * End of ZLANTR
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
276 *
6c6ff9b82577 [project @ 2006-05-22 05:45:46 by jwe]
jwe
parents:
diff changeset
277 END