125 DOUBLE PRECISION FUNCTION dlantp( NORM, UPLO, DIAG, N, AP, WORK )
134 CHARACTER diag, norm, uplo
138 DOUBLE PRECISION ap( * ), work( * )
144 DOUBLE PRECISION one, zero
145 parameter( one = 1.0d+0, zero = 0.0d+0 )
150 DOUBLE PRECISION sum, value
153 DOUBLE PRECISION ssq( 2 ), colssq( 2 )
169 ELSE IF(
lsame( norm,
'M' ) )
THEN
174 IF(
lsame( diag,
'U' ) )
THEN
176 IF(
lsame( uplo,
'U' ) )
THEN
178 DO 10 i = k, k + j - 2
180 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
186 DO 30 i = k + 1, k + n - j
188 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
195 IF(
lsame( uplo,
'U' ) )
THEN
197 DO 50 i = k, k + j - 1
199 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
205 DO 70 i = k, k + n - j
207 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
213 ELSE IF( (
lsame( norm,
'O' ) ) .OR. ( norm.EQ.
'1' ) )
THEN
219 udiag =
lsame( diag,
'U' )
220 IF(
lsame( uplo,
'U' ) )
THEN
224 DO 90 i = k, k + j - 2
225 sum = sum + abs( ap( i ) )
229 DO 100 i = k, k + j - 1
230 sum = sum + abs( ap( i ) )
234 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
240 DO 120 i = k + 1, k + n - j
241 sum = sum + abs( ap( i ) )
245 DO 130 i = k, k + n - j
246 sum = sum + abs( ap( i ) )
250 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
253 ELSE IF(
lsame( norm,
'I' ) )
THEN
258 IF(
lsame( uplo,
'U' ) )
THEN
259 IF(
lsame( diag,
'U' ) )
THEN
265 work( i ) = work( i ) + abs( ap( k ) )
276 work( i ) = work( i ) + abs( ap( k ) )
282 IF(
lsame( diag,
'U' ) )
THEN
289 work( i ) = work( i ) + abs( ap( k ) )
299 work( i ) = work( i ) + abs( ap( k ) )
308 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
310 ELSE IF( (
lsame( norm,
'F' ) ) .OR. (
lsame( norm,
'E' ) ) )
THEN
317 IF(
lsame( uplo,
'U' ) )
THEN
318 IF(
lsame( diag,
'U' ) )
THEN
325 CALL dlassq( j-1, ap( k ), 1,
326 $ colssq( 1 ), colssq( 2 ) )
337 CALL dlassq( j, ap( k ), 1,
338 $ colssq( 1 ), colssq( 2 ) )
344 IF(
lsame( diag,
'U' ) )
THEN
351 CALL dlassq( n-j, ap( k ), 1,
352 $ colssq( 1 ), colssq( 2 ) )
363 CALL dlassq( n-j+1, ap( k ), 1,
364 $ colssq( 1 ), colssq( 2 ) )
370 VALUE = ssq( 1 )*sqrt( ssq( 2 ) )