146 CHARACTER diag,
norm, uplo
150 REAL ab( ldab, * ), ( * )
157 parameter( one = 1.0e+0, zero = 0.0e+0 )
162 REAL scale, sum, value
172 INTRINSIC abs,
max,
min, sqrt
182 IF(
lsame( diag,
'U' ) )
THEN
184 IF(
lsame( uplo,
'U' ) )
THEN
186 DO 10 i =
max( k+2-j, 1 ), k
187 sum = abs( ab( i, j ) )
188 IF(
VALUE .LT. sum .OR.
sisnan( sum ) )
VALUE = sum
193 DO 30 i = 2,
min( n+1-j, k+1 )
194 sum = abs( ab( i, j ) )
195 IF(
VALUE .LT. sum .OR.
sisnan( sum ) )
VALUE = sum
201 IF(
lsame( uplo, 'u
' ) ) THEN
203 DO 50 I = MAX( K+2-J, 1 ), K + 1
204 SUM = ABS( AB( I, J ) )
205.LT..OR.
IF( VALUE SUM SISNAN( SUM ) ) VALUE = SUM
210 DO 70 I = 1, MIN( N+1-J, K+1 )
211 SUM = ABS( AB( I, J ) )
212.LT..OR.
IF( VALUE SUM SISNAN( SUM ) ) VALUE = SUM
217 ELSE IF( ( LSAME( NORM, 'o.OR..EQ.
' ) ) ( NORM'1
' ) ) THEN
222 UDIAG = LSAME( DIAG, 'u
' )
223 IF( LSAME( UPLO, 'u
' ) ) THEN
227 DO 90 I = MAX( K+2-J, 1 ), K
228 SUM = SUM + ABS( AB( I, J ) )
232 DO 100 I = MAX( K+2-J, 1 ), K + 1
233 SUM = SUM + ABS( AB( I, J ) )
236.LT..OR.
IF( VALUE SUM SISNAN( SUM ) ) VALUE = SUM
242 DO 120 I = 2, MIN( N+1-J, K+1 )
243 SUM = SUM + ABS( AB( I, J ) )
247 DO 130 I = 1, MIN( N+1-J, K+1 )
248 SUM = SUM + ABS( AB( I, J ) )
251.LT..OR.
IF( VALUE SUM SISNAN( SUM ) ) VALUE = SUM
254 ELSE IF( LSAME( NORM, 'i
' ) ) THEN
259 IF( LSAME( UPLO, 'u
' ) ) THEN
260 IF( LSAME( DIAG, 'u' ) )
THEN
266 DO 160 i =
max( 1, j-k ), j - 1
267 work( i ) = work( i ) + abs( ab( l+i, j ) )
276 DO 190 i =
max( 1, j-k ), j
277 work( i ) = work( i ) + abs( ab( l+i, j ) )
282 IF(
lsame( diag,
'U' ) )
THEN
288 DO 220 i = j + 1,
min( n, j+k )
289 work( i ) = work( i ) + abs( ab( l+i, j ) )
298 DO 250 i = j,
min( n, j+k )
299 work( i ) = work( i ) + abs( ab( l+i, j ) )
306 IF(
VALUE .LT. sum .OR.
sisnan( sum ) )
VALUE = sum
312 IF(
lsame( uplo,
'U' ) )
THEN
313 IF(
lsame( diag,
'U' ) )
THEN
319 $ ab(
max( k+2-j, 1 ), j ), 1, scale,
332 IF(
lsame( diag,
'U' ) )
THEN
337 CALL slassq(
min( n-j, k ), ab( 2, j ), 1, scale,
345 CALL slassq(
min( n-j+1, k+1 ), ab( 1, j ), 1, scale,
350 VALUE = scale*sqrt( sum )
subroutine slassq(n, x, incx, scl, sumsq)
SLASSQ updates a sum of squares represented in scaled form.
real function slantb(norm, uplo, diag, n, k, ab, ldab, work)
SLANTB returns the value of the 1-norm, or the Frobenius norm, or the infinity norm,...