107 DOUBLE PRECISION FUNCTION dlangt( NORM, N, DL, D, DU )
119 DOUBLE PRECISION D( * ), DL( * ), DU( * )
125 DOUBLE PRECISION ONE, ZERO
126 parameter ( one = 1.0d+0, zero = 0.0d+0 )
130 DOUBLE PRECISION ANORM, SCALE, SUM, TEMP
133 LOGICAL LSAME, DISNAN
134 EXTERNAL lsame, disnan
146 ELSE IF( lsame( norm,
'M' ) )
THEN
150 anorm = abs( d( n ) )
152 IF( anorm.LT.abs( dl( i ) ) .OR. disnan( abs( dl( i ) ) ) )
154 IF( anorm.LT.abs( d( i ) ) .OR. disnan( abs( d( i ) ) ) )
156 IF( anorm.LT.abs( du( i ) ) .OR. disnan(abs( du( i ) ) ) )
159 ELSE IF( lsame( norm,
'O' ) .OR. norm.EQ.
'1' )
THEN
164 anorm = abs( d( 1 ) )
166 anorm = abs( d( 1 ) )+abs( dl( 1 ) )
167 temp = abs( d( n ) )+abs( du( n-1 ) )
168 IF( anorm .LT. temp .OR. disnan( temp ) ) anorm = temp
170 temp = abs( d( i ) )+abs( dl( i ) )+abs( du( i-1 ) )
171 IF( anorm .LT. temp .OR. disnan( temp ) ) anorm = temp
174 ELSE IF( lsame( norm,
'I' ) )
THEN
179 anorm = abs( d( 1 ) )
181 anorm = abs( d( 1 ) )+abs( du( 1 ) )
182 temp = abs( d( n ) )+abs( dl( n-1 ) )
183 IF( anorm .LT. temp .OR. disnan( temp ) ) anorm = temp
185 temp = abs( d( i ) )+abs( du( i ) )+abs( dl( i-1 ) )
186 IF( anorm .LT. temp .OR. disnan( temp ) ) anorm = temp
189 ELSE IF( ( lsame( norm,
'F' ) ) .OR. ( lsame( norm,
'E' ) ) )
THEN
195 CALL dlassq( n, d, 1, scale, sum )
197 CALL dlassq( n-1, dl, 1, scale, sum )
198 CALL dlassq( n-1, du, 1, scale, sum )
200 anorm = scale*sqrt( sum )
subroutine dlassq(N, X, INCX, SCALE, SUMSQ)
DLASSQ updates a sum of squares represented in scaled form.
double precision function dlangt(NORM, N, DL, D, DU)
DLANGT returns the value of the 1-norm, Frobenius norm, infinity-norm, or the largest absolute value ...