140 REAL function
clantr( norm, uplo, diag, m, n, a, lda,
149 CHARACTER diag, norm, uplo
161 parameter( one = 1.0e+0, zero = 0.0e+0 )
169 REAL ssq( 2 ), colssq( 2 )
179 INTRINSIC abs, min, sqrt
183 IF( min( m, n ).EQ.0 )
THEN
185 ELSE IF(
lsame( norm,
'M' ) )
THEN
189 IF(
lsame( diag,
'U' ) )
THEN
191 IF(
lsame( uplo,
'U' ) )
THEN
193 DO 10 i = 1, min( m, j-1 )
194 sum = abs( a( i, j ) )
195 IF(
VALUE .LT. sum .OR.
sisnan( sum ) )
VALUE = sum
201 sum = abs( a( i, j ) )
202 IF(
VALUE .LT. sum .OR.
sisnan( sum ) )
VALUE = sum
208 IF(
lsame( uplo,
'U' ) )
THEN
210 DO 50 i = 1, min( m, j )
211 sum = abs( a( i, j ) )
212 IF(
VALUE .LT. sum .OR.
sisnan( sum ) )
VALUE = sum
218 sum = abs( a( i, j ) )
219 IF(
VALUE .LT. sum .OR.
sisnan( sum ) )
VALUE = sum
224 ELSE IF( (
lsame( norm,
'O' ) ) .OR. ( norm.EQ.
'1' ) )
THEN
229 udiag =
lsame( diag,
'U' )
230 IF(
lsame( uplo,
'U' ) )
THEN
232 IF( ( udiag ) .AND. ( j.LE.m ) )
THEN
235 sum = sum + abs( a( i, j ) )
239 DO 100 i = 1, min( m, j )
240 sum = sum + abs( a( i, j ) )
243 IF(
VALUE .LT. sum .OR.
sisnan( sum ) )
VALUE = sum
250 sum = sum + abs( a( i, j ) )
255 sum = sum + abs( a( i, j ) )
258 IF(
VALUE .LT. sum .OR.
sisnan( sum ) )
VALUE = sum
261 ELSE IF(
lsame( norm,
'I' ) )
THEN
265 IF(
lsame( uplo,
'U' ) )
THEN
266 IF(
lsame( diag,
'U' ) )
THEN
271 DO 160 i = 1, min( m, j-1 )
272 work( i ) = work( i ) + abs( a( i, j ) )
280 DO 190 i = 1, min( m, j )
281 work( i ) = work( i ) + abs( a( i, j ) )
286 IF(
lsame( diag,
'U' ) )
THEN
287 DO 210 i = 1, min( m, n )
295 work( i ) = work( i ) + abs( a( i, j ) )
304 work( i ) = work( i ) + abs( a( 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
324 ssq( 2 ) = min( m, n )
328 CALL classq( min( m, j-1 ), a( 1, j ), 1,
329 $ colssq( 1 ), colssq( 2 ) )
338 CALL classq( min( m, j ), a( 1, j ), 1,
339 $ colssq( 1 ), colssq( 2 ) )
344 IF(
lsame( diag,
'U' ) )
THEN
346 ssq( 2 ) = min( m, n )
350 CALL classq( m-j, a( min( m, j+1 ), j ), 1,
351 $ colssq( 1 ), colssq( 2 ) )
360 CALL classq( m-j+1, a( j, j ), 1,
361 $ colssq( 1 ), colssq( 2 ) )
366 VALUE = ssq( 1 )*sqrt( ssq( 2 ) )
subroutine scombssq(V1, V2)
SCOMBSSQ adds two scaled sum of squares quantities
logical function sisnan(SIN)
SISNAN tests input for NaN.
logical function lsame(CA, CB)
LSAME
real function clantr(NORM, UPLO, DIAG, M, N, A, LDA, WORK)
CLANTR returns the value of the 1-norm, or the Frobenius norm, or the infinity norm,...
subroutine classq(N, X, INCX, SCALE, SUMSQ)
CLASSQ updates a sum of squares represented in scaled form.