123 DOUBLE PRECISION FUNCTION dlantp( NORM, UPLO, DIAG, N, AP, WORK )
131 CHARACTER diag, norm, uplo
135 DOUBLE PRECISION ap( * ), work( * )
141 DOUBLE PRECISION one, zero
142 parameter( one = 1.0d+0, zero = 0.0d+0 )
147 DOUBLE PRECISION sum, value
150 DOUBLE PRECISION ssq( 2 ), colssq( 2 )
166 ELSE IF(
lsame( norm,
'M' ) )
THEN
171 IF(
lsame( diag,
'U' ) )
THEN
173 IF(
lsame( uplo,
'U' ) )
THEN
175 DO 10 i = k, k + j - 2
177 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
183 DO 30 i = k + 1, k + n - j
185 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
192 IF(
lsame( uplo,
'U' ) )
THEN
194 DO 50 i = k, k + j - 1
196 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
202 DO 70 i = k, k + n - j
204 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
210 ELSE IF( (
lsame( norm,
'O' ) ) .OR. ( norm.EQ.
'1' ) )
THEN
216 udiag =
lsame( diag,
'U' )
217 IF(
lsame( uplo,
'U' ) )
THEN
221 DO 90 i = k, k + j - 2
222 sum = sum + abs( ap( i ) )
226 DO 100 i = k, k + j - 1
227 sum = sum + abs( ap( i ) )
231 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
237 DO 120 i = k + 1, k + n - j
238 sum = sum + abs( ap( i ) )
242 DO 130 i = k, k + n - j
243 sum = sum + abs( ap( i ) )
247 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
250 ELSE IF(
lsame( norm,
'I' ) )
THEN
255 IF(
lsame( uplo,
'U' ) )
THEN
256 IF(
lsame( diag,
'U' ) )
THEN
262 work( i ) = work( i ) + abs( ap( k ) )
273 work( i ) = work( i ) + abs( ap( k ) )
279 IF(
lsame( diag,
'U' ) )
THEN
286 work( i ) = work( i ) + abs( ap( k ) )
296 work( i ) = work( i ) + abs( ap( k ) )
305 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
307 ELSE IF( (
lsame( norm,
'F' ) ) .OR. (
lsame( norm,
'E' ) ) )
THEN
314 IF(
lsame( uplo,
'U' ) )
THEN
315 IF(
lsame( diag,
'U' ) )
THEN
322 CALL dlassq( j-1, ap( k ), 1,
323 $ colssq( 1 ), colssq( 2 ) )
334 CALL dlassq( j, ap( k ), 1,
335 $ colssq( 1 ), colssq( 2 ) )
341 IF(
lsame( diag,
'U' ) )
THEN
348 CALL dlassq( n-j, ap( k ), 1,
349 $ colssq( 1 ), colssq( 2 ) )
360 CALL dlassq( n-j+1, ap( k ), 1,
361 $ colssq( 1 ), colssq( 2 ) )
367 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 dlantp(NORM, UPLO, DIAG, N, AP, WORK)
DLANTP returns the value of the 1-norm, or the Frobenius norm, or the infinity norm,...