105 REAL function
slangt( norm, n, dl, d, du )
116 REAL d( * ), dl( * ), du( * )
123 parameter( one = 1.0e+0, zero = 0.0e+0 )
127 REAL anorm, scale, sum, temp
143 ELSE IF(
lsame( norm,
'M' ) )
THEN
147 anorm = abs( d( n ) )
149 IF( anorm.LT.abs( dl( i ) ) .OR.
sisnan( abs( dl( i ) ) ) )
151 IF( anorm.LT.abs( d( i ) ) .OR.
sisnan( abs( d( i ) ) ) )
153 IF( anorm.LT.abs( du( i ) ) .OR.
sisnan(abs( du( i ) ) ) )
156 ELSE IF(
lsame( norm,
'O' ) .OR. norm.EQ.
'1' )
THEN
161 anorm = abs( d( 1 ) )
163 anorm = abs( d( 1 ) )+abs( dl( 1 ) )
164 temp = abs( d( n ) )+abs( du( n-1 ) )
165 IF( anorm .LT. temp .OR.
sisnan( temp ) ) anorm = temp
167 temp = abs( d( i ) )+abs( dl( i ) )+abs( du( i-1 ) )
168 IF( anorm .LT. temp .OR.
sisnan( temp ) ) anorm = temp
171 ELSE IF(
lsame( norm,
'I' ) )
THEN
176 anorm = abs( d( 1 ) )
178 anorm = abs( d( 1 ) )+abs( du( 1 ) )
179 temp = abs( d( n ) )+abs( dl( n-1 ) )
180 IF( anorm .LT. temp .OR.
sisnan( temp ) ) anorm = temp
182 temp = abs( d( i ) )+abs( du( i ) )+abs( dl( i-1 ) )
183 IF( anorm .LT. temp .OR.
sisnan( temp ) ) anorm = temp
186 ELSE IF( (
lsame( norm,
'F' ) ) .OR. (
lsame( norm,
'E' ) ) )
THEN
192 CALL slassq( n, d, 1, scale, sum )
194 CALL slassq( n-1, dl, 1, scale, sum )
195 CALL slassq( n-1, du, 1, scale, sum )
197 anorm = scale*sqrt( sum )
subroutine slassq(n, x, incx, scl, sumsq)
SLASSQ updates a sum of squares represented in scaled form.
logical function sisnan(SIN)
SISNAN tests input for NaN.
logical function lsame(CA, CB)
LSAME
real function slangt(NORM, N, DL, D, DU)
SLANGT returns the value of the 1-norm, Frobenius norm, infinity-norm, or the largest absolute value ...