139 REAL function
clantb( norm, uplo, diag, n, k, ab,
148 CHARACTER diag, norm, uplo
153 COMPLEX ab( ldab, * )
160 parameter( one = 1.0e+0, zero = 0.0e+0 )
168 REAL ssq( 2 ), colssq( 2 )
178 INTRINSIC abs, max, min, sqrt
184 ELSE IF(
lsame( norm,
'M' ) )
THEN
188 IF(
lsame( diag,
'U' ) )
THEN
190 IF(
lsame( uplo,
'U' ) )
THEN
192 DO 10 i = max( k+2-j, 1 ), k
193 sum = abs( ab( i, j ) )
194 IF(
VALUE .LT. sum .OR.
sisnan( sum ) )
VALUE = sum
199 DO 30 i = 2, min( n+1-j, k+1 )
200 sum = abs( ab( i, j ) )
201 IF(
VALUE .LT. sum .OR.
sisnan( sum ) )
VALUE = sum
207 IF(
lsame( uplo,
'U' ) )
THEN
209 DO 50 i = max( k+2-j, 1 ), k + 1
210 sum = abs( ab( i, j ) )
211 IF(
VALUE .LT. sum .OR.
sisnan( sum ) )
VALUE = sum
216 DO 70 i = 1, min( n+1-j, k+1 )
217 sum = abs( ab( i, j ) )
218 IF(
VALUE .LT. sum .OR.
sisnan( sum ) )
VALUE = sum
223 ELSE IF( (
lsame( norm,
'O' ) ) .OR. ( norm.EQ.
'1' ) )
THEN
228 udiag =
lsame( diag,
'U' )
229 IF(
lsame( uplo,
'U' ) )
THEN
233 DO 90 i = max( k+2-j, 1 ), k
234 sum = sum + abs( ab( i, j ) )
238 DO 100 i = max( k+2-j, 1 ), k + 1
239 sum = sum + abs( ab( i, j ) )
242 IF(
VALUE .LT. sum .OR.
sisnan( sum ) )
VALUE = sum
248 DO 120 i = 2, min( n+1-j, k+1 )
249 sum = sum + abs( ab( i, j ) )
253 DO 130 i = 1, min( n+1-j, k+1 )
254 sum = sum + abs( ab( i, j ) )
257 IF(
VALUE .LT. sum .OR.
sisnan( sum ) )
VALUE = sum
260 ELSE IF(
lsame( norm,
'I' ) )
THEN
265 IF(
lsame( uplo,
'U' ) )
THEN
266 IF(
lsame( diag,
'U' ) )
THEN
272 DO 160 i = max( 1, j-k ), j - 1
273 work( i ) = work( i ) + abs( ab( l+i, j ) )
282 DO 190 i = max( 1, j-k ), j
283 work( i ) = work( i ) + abs( ab( l+i, j ) )
288 IF(
lsame( diag,
'U' ) )
THEN
294 DO 220 i = j + 1, min( n, j+k )
295 work( i ) = work( i ) + abs( ab( l+i, j ) )
304 DO 250 i = j, min( n, j+k )
305 work( i ) = work( i ) + abs( ab( l+i, j ) )
312 IF(
VALUE .LT. sum .OR.
sisnan( sum ) )
VALUE = sum
314 ELSE IF( (
lsame( norm,
'F' ) ) .OR. (
lsame( norm,
'E' ) ) )
THEN
321 IF(
lsame( uplo,
'U' ) )
THEN
322 IF(
lsame( diag,
'U' ) )
THEN
329 CALL classq( min( j-1, k ),
330 $ ab( max( k+2-j, 1 ), j ), 1,
331 $ colssq( 1 ), colssq( 2 ) )
341 CALL classq( min( j, k+1 ), ab( max( k+2-j, 1 ), j ),
342 $ 1, colssq( 1 ), colssq( 2 ) )
347 IF(
lsame( diag,
'U' ) )
THEN
354 CALL classq( min( n-j, k ), ab( 2, j ), 1,
355 $ colssq( 1 ), colssq( 2 ) )
365 CALL classq( min( n-j+1, k+1 ), ab( 1, j ), 1,
366 $ colssq( 1 ), colssq( 2 ) )
371 VALUE = ssq( 1 )*sqrt( ssq( 2 ) )
subroutine scombssq(V1, V2)
SCOMBSSQ adds two scaled sum of squares quantities
subroutine classq(n, x, incx, scl, sumsq)
CLASSQ 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 clantb(NORM, UPLO, DIAG, N, K, AB, LDAB, WORK)
CLANTB returns the value of the 1-norm, or the Frobenius norm, or the infinity norm,...