122 REAL function
slangb( norm, n, kl, ku, ab, ldab,
131 INTEGER kl, ku, ldab, n
134 REAL ab( ldab, * ), work( * )
142 parameter( one = 1.0e+0, zero = 0.0e+0 )
146 REAL scale, sum,
VALUE, temp
156 INTRINSIC abs, max, min, sqrt
162 ELSE IF(
lsame( norm,
'M' ) )
THEN
168 DO 10 i = max( ku+2-j, 1 ), min( n+ku+1-j, kl+ku+1 )
169 temp = abs( ab( i, j ) )
170 IF(
VALUE.LT.temp .OR.
sisnan( temp ) )
VALUE = temp
173 ELSE IF( (
lsame( norm,
'O' ) ) .OR. ( norm.EQ.
'1' ) )
THEN
180 DO 30 i = max( ku+2-j, 1 ), min( n+ku+1-j, kl+ku+1 )
181 sum = sum + abs( ab( i, j ) )
183 IF(
VALUE.LT.sum .OR.
sisnan( sum ) )
VALUE = sum
185 ELSE IF(
lsame( norm,
'I' ) )
THEN
194 DO 60 i = max( 1, j-ku ), min( n, j+kl )
195 work( i ) = work( i ) + abs( ab( k+i, j ) )
201 IF(
VALUE.LT.temp .OR.
sisnan( temp ) )
VALUE = temp
203 ELSE IF( (
lsame( norm,
'F' ) ) .OR. (
lsame( norm,
'E' ) ) )
THEN
212 CALL slassq( min( n, j+kl )-l+1, ab( k, j ), 1, scale, sum )
214 VALUE = 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 slangb(NORM, N, KL, KU, AB, LDAB, WORK)
SLANGB returns the value of the 1-norm, Frobenius norm, infinity-norm, or the largest absolute value ...