124 DOUBLE PRECISION FUNCTION zlantp( NORM, UPLO, DIAG, N, AP, WORK )
132 CHARACTER diag, norm, uplo
136 DOUBLE PRECISION work( * )
143 DOUBLE PRECISION one, zero
144 parameter( one = 1.0d+0, zero = 0.0d+0 )
149 DOUBLE PRECISION sum, value
152 DOUBLE PRECISION ssq( 2 ), colssq( 2 )
168 ELSE IF(
lsame( norm,
'M' ) )
THEN
173 IF(
lsame( diag,
'U' ) )
THEN
175 IF(
lsame( uplo,
'U' ) )
THEN
177 DO 10 i = k, k + j - 2
179 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
185 DO 30 i = k + 1, k + n - j
187 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
194 IF(
lsame( uplo,
'U' ) )
THEN
196 DO 50 i = k, k + j - 1
198 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
204 DO 70 i = k, k + n - j
206 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
212 ELSE IF( (
lsame( norm,
'O' ) ) .OR. ( norm.EQ.
'1' ) )
THEN
218 udiag =
lsame( diag,
'U' )
219 IF(
lsame( uplo,
'U' ) )
THEN
223 DO 90 i = k, k + j - 2
224 sum = sum + abs( ap( i ) )
228 DO 100 i = k, k + j - 1
229 sum = sum + abs( ap( i ) )
233 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
239 DO 120 i = k + 1, k + n - j
240 sum = sum + abs( ap( i ) )
244 DO 130 i = k, k + n - j
245 sum = sum + abs( ap( i ) )
249 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
252 ELSE IF(
lsame( norm,
'I' ) )
THEN
257 IF(
lsame( uplo,
'U' ) )
THEN
258 IF(
lsame( diag,
'U' ) )
THEN
264 work( i ) = work( i ) + abs( ap( k ) )
275 work( i ) = work( i ) + abs( ap( k ) )
281 IF(
lsame( diag,
'U' ) )
THEN
288 work( i ) = work( i ) + abs( ap( k ) )
298 work( i ) = work( i ) + abs( ap( k ) )
307 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
309 ELSE IF( (
lsame( norm,
'F' ) ) .OR. (
lsame( norm,
'E' ) ) )
THEN
316 IF(
lsame( uplo,
'U' ) )
THEN
317 IF(
lsame( diag,
'U' ) )
THEN
324 CALL zlassq( j-1, ap( k ), 1,
325 $ colssq( 1 ), colssq( 2 ) )
336 CALL zlassq( j, ap( k ), 1,
337 $ colssq( 1 ), colssq( 2 ) )
343 IF(
lsame( diag,
'U' ) )
THEN
350 CALL zlassq( n-j, ap( k ), 1,
351 $ colssq( 1 ), colssq( 2 ) )
362 CALL zlassq( n-j+1, ap( k ), 1,
363 $ colssq( 1 ), colssq( 2 ) )
369 VALUE = ssq( 1 )*sqrt( ssq( 2 ) )
logical function disnan(DIN)
DISNAN tests input for NaN.
subroutine dcombssq(V1, V2)
DCOMBSSQ adds two scaled sum of squares quantities.
subroutine zlassq(n, x, incx, scl, sumsq)
ZLASSQ updates a sum of squares represented in scaled form.
logical function lsame(CA, CB)
LSAME
double precision function zlantp(NORM, UPLO, DIAG, N, AP, WORK)
ZLANTP returns the value of the 1-norm, or the Frobenius norm, or the infinity norm,...