LAPACK
3.9.0
LAPACK: Linear Algebra PACKage
dlanst.f
Go to the documentation of this file.
1
*> \brief \b DLANST returns the value of the 1-norm, or the Frobenius norm, or the infinity norm, or the element of largest absolute value of a real symmetric tridiagonal matrix.
2
*
3
* =========== DOCUMENTATION ===========
4
*
5
* Online html documentation available at
6
* http://www.netlib.org/lapack/explore-html/
7
*
8
*> \htmlonly
9
*> Download DLANST + dependencies
10
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dlanst.f">
11
*> [TGZ]</a>
12
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dlanst.f">
13
*> [ZIP]</a>
14
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dlanst.f">
15
*> [TXT]</a>
16
*> \endhtmlonly
17
*
18
* Definition:
19
* ===========
20
*
21
* DOUBLE PRECISION FUNCTION DLANST( NORM, N, D, E )
22
*
23
* .. Scalar Arguments ..
24
* CHARACTER NORM
25
* INTEGER N
26
* ..
27
* .. Array Arguments ..
28
* DOUBLE PRECISION D( * ), E( * )
29
* ..
30
*
31
*
32
*> \par Purpose:
33
* =============
34
*>
35
*> \verbatim
36
*>
37
*> DLANST returns the value of the one norm, or the Frobenius norm, or
38
*> the infinity norm, or the element of largest absolute value of a
39
*> real symmetric tridiagonal matrix A.
40
*> \endverbatim
41
*>
42
*> \return DLANST
43
*> \verbatim
44
*>
45
*> DLANST = ( max(abs(A(i,j))), NORM = 'M' or 'm'
46
*> (
47
*> ( norm1(A), NORM = '1', 'O' or 'o'
48
*> (
49
*> ( normI(A), NORM = 'I' or 'i'
50
*> (
51
*> ( normF(A), NORM = 'F', 'f', 'E' or 'e'
52
*>
53
*> where norm1 denotes the one norm of a matrix (maximum column sum),
54
*> normI denotes the infinity norm of a matrix (maximum row sum) and
55
*> normF denotes the Frobenius norm of a matrix (square root of sum of
56
*> squares). Note that max(abs(A(i,j))) is not a consistent matrix norm.
57
*> \endverbatim
58
*
59
* Arguments:
60
* ==========
61
*
62
*> \param[in] NORM
63
*> \verbatim
64
*> NORM is CHARACTER*1
65
*> Specifies the value to be returned in DLANST as described
66
*> above.
67
*> \endverbatim
68
*>
69
*> \param[in] N
70
*> \verbatim
71
*> N is INTEGER
72
*> The order of the matrix A. N >= 0. When N = 0, DLANST is
73
*> set to zero.
74
*> \endverbatim
75
*>
76
*> \param[in] D
77
*> \verbatim
78
*> D is DOUBLE PRECISION array, dimension (N)
79
*> The diagonal elements of A.
80
*> \endverbatim
81
*>
82
*> \param[in] E
83
*> \verbatim
84
*> E is DOUBLE PRECISION array, dimension (N-1)
85
*> The (n-1) sub-diagonal or super-diagonal elements of A.
86
*> \endverbatim
87
*
88
* Authors:
89
* ========
90
*
91
*> \author Univ. of Tennessee
92
*> \author Univ. of California Berkeley
93
*> \author Univ. of Colorado Denver
94
*> \author NAG Ltd.
95
*
96
*> \date December 2016
97
*
98
*> \ingroup OTHERauxiliary
99
*
100
* =====================================================================
101
DOUBLE PRECISION
FUNCTION
dlanst
( NORM, N, D, E )
102
*
103
* -- LAPACK auxiliary routine (version 3.7.0) --
104
* -- LAPACK is a software package provided by Univ. of Tennessee, --
105
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
106
* December 2016
107
*
108
* .. Scalar Arguments ..
109
CHARACTER
norm
110
INTEGER
n
111
* ..
112
* .. Array Arguments ..
113
DOUBLE PRECISION
d( * ), e( * )
114
* ..
115
*
116
* =====================================================================
117
*
118
* .. Parameters ..
119
DOUBLE PRECISION
one, zero
120
parameter( one = 1.0d+0, zero = 0.0d+0 )
121
* ..
122
* .. Local Scalars ..
123
INTEGER
i
124
DOUBLE PRECISION
anorm, scale, sum
125
* ..
126
* .. External Functions ..
127
LOGICAL
lsame
,
disnan
128
EXTERNAL
lsame
,
disnan
129
* ..
130
* .. External Subroutines ..
131
EXTERNAL
dlassq
132
* ..
133
* .. Intrinsic Functions ..
134
INTRINSIC
abs, sqrt
135
* ..
136
* .. Executable Statements ..
137
*
138
IF
( n.LE.0 )
THEN
139
anorm = zero
140
ELSE
IF
(
lsame
( norm,
'M'
) )
THEN
141
*
142
* Find max(abs(A(i,j))).
143
*
144
anorm = abs( d( n ) )
145
DO
10 i = 1, n - 1
146
sum = abs( d( i ) )
147
IF
( anorm .LT. sum .OR.
disnan
( sum ) ) anorm = sum
148
sum = abs( e( i ) )
149
IF
( anorm .LT. sum .OR.
disnan
( sum ) ) anorm = sum
150
10
CONTINUE
151
ELSE
IF
(
lsame
( norm,
'O'
) .OR. norm.EQ.
'1'
.OR.
152
$
lsame
( norm,
'I'
) )
THEN
153
*
154
* Find norm1(A).
155
*
156
IF
( n.EQ.1 )
THEN
157
anorm = abs( d( 1 ) )
158
ELSE
159
anorm = abs( d( 1 ) )+abs( e( 1 ) )
160
sum = abs( e( n-1 ) )+abs( d( n ) )
161
IF
( anorm .LT. sum .OR.
disnan
( sum ) ) anorm = sum
162
DO
20 i = 2, n - 1
163
sum = abs( d( i ) )+abs( e( i ) )+abs( e( i-1 ) )
164
IF
( anorm .LT. sum .OR.
disnan
( sum ) ) anorm = sum
165
20
CONTINUE
166
END IF
167
ELSE
IF
( (
lsame
( norm,
'F'
) ) .OR. (
lsame
( norm,
'E'
) ) )
THEN
168
*
169
* Find normF(A).
170
*
171
scale = zero
172
sum = one
173
IF
( n.GT.1 )
THEN
174
CALL
dlassq
( n-1, e, 1, scale, sum )
175
sum = 2*sum
176
END IF
177
CALL
dlassq
( n, d, 1, scale, sum )
178
anorm = scale*sqrt( sum )
179
END IF
180
*
181
dlanst
= anorm
182
RETURN
183
*
184
* End of DLANST
185
*
186
END
dlanst
double precision function dlanst(NORM, N, D, E)
DLANST returns the value of the 1-norm, or the Frobenius norm, or the infinity norm,...
Definition:
dlanst.f:102
disnan
logical function disnan(DIN)
DISNAN tests input for NaN.
Definition:
disnan.f:61
lsame
logical function lsame(CA, CB)
LSAME
Definition:
lsame.f:55
dlassq
subroutine dlassq(N, X, INCX, SCALE, SUMSQ)
DLASSQ updates a sum of squares represented in scaled form.
Definition:
dlassq.f:105
SRC
dlanst.f
Generated on Wed May 5 2021 15:10:40 for LAPACK by
1.8.16