122 DOUBLE PRECISION FUNCTION dlangb( NORM, N, KL, KU, AB, LDAB,
132 INTEGER kl, ku, ldab, n
135 DOUBLE PRECISION ab( ldab, * ), work( * )
141 DOUBLE PRECISION one, zero
142 parameter( one = 1.0d+0, zero = 0.0d+0 )
146 DOUBLE PRECISION sum,
VALUE, temp
149 DOUBLE PRECISION ssq( 2 ), colssq( 2 )
159 INTRINSIC abs, max, min, sqrt
165 ELSE IF(
lsame( norm,
'M' ) )
THEN
171 DO 10 i = max( ku+2-j, 1 ), min( n+ku+1-j, kl+ku+1 )
172 temp = abs( ab( i, j ) )
173 IF(
VALUE.LT.temp .OR.
disnan( temp ) )
VALUE = temp
176 ELSE IF( (
lsame( norm,
'O' ) ) .OR. ( norm.EQ.
'1' ) )
THEN
183 DO 30 i = max( ku+2-j, 1 ), min( n+ku+1-j, kl+ku+1 )
184 sum = sum + abs( ab( i, j ) )
186 IF(
VALUE.LT.sum .OR.
disnan( sum ) )
VALUE = sum
188 ELSE IF(
lsame( norm,
'I' ) )
THEN
197 DO 60 i = max( 1, j-ku ), min( n, j+kl )
198 work( i ) = work( i ) + abs( ab( k+i, j ) )
204 IF(
VALUE.LT.temp .OR.
disnan( temp ) )
VALUE = temp
206 ELSE IF( (
lsame( norm,
'F' ) ) .OR. (
lsame( norm,
'E' ) ) )
THEN
220 CALL dlassq( min( n, j+kl )-l+1, ab( k, j ), 1,
221 $ colssq( 1 ), colssq( 2 ) )
224 VALUE = ssq( 1 )*sqrt( ssq( 2 ) )
logical function disnan(DIN)
DISNAN tests input for NaN.
subroutine dlassq(n, x, incx, scl, sumsq)
DLASSQ updates a sum of squares represented in scaled form.
subroutine dcombssq(V1, V2)
DCOMBSSQ adds two scaled sum of squares quantities.
logical function lsame(CA, CB)
LSAME
double precision function dlangb(NORM, N, KL, KU, AB, LDAB, WORK)
DLANGB returns the value of the 1-norm, Frobenius norm, infinity-norm, or the largest absolute value ...