121 DOUBLE PRECISION FUNCTION dlantp( NORM, UPLO, DIAG, N, AP,
129 CHARACTER diag, norm, uplo
133 DOUBLE PRECISION ap( * ), work( * )
139 DOUBLE PRECISION one, zero
140 parameter( one = 1.0d+0, zero = 0.0d+0 )
145 DOUBLE PRECISION scale, sum, value
161 ELSE IF(
lsame( norm,
'M' ) )
THEN
166 IF(
lsame( diag,
'U' ) )
THEN
168 IF(
lsame( uplo,
'U' ) )
THEN
170 DO 10 i = k, k + j - 2
172 IF(
VALUE .LT. sum .OR.
173 $
disnan( sum ) )
VALUE = sum
179 DO 30 i = k + 1, k + n - j
181 IF(
VALUE .LT. sum .OR.
182 $
disnan( sum ) )
VALUE = sum
189 IF(
lsame( uplo,
'U' ) )
THEN
191 DO 50 i = k, k + j - 1
193 IF(
VALUE .LT. sum .OR.
194 $
disnan( sum ) )
VALUE = sum
200 DO 70 i = k, k + n - j
202 IF(
VALUE .LT. sum .OR.
203 $
disnan( sum ) )
VALUE = sum
209 ELSE IF( (
lsame( norm,
'O' ) ) .OR. ( norm.EQ.
'1' ) )
THEN
215 udiag =
lsame( diag,
'U' )
216 IF(
lsame( uplo,
'U' ) )
THEN
220 DO 90 i = k, k + j - 2
221 sum = sum + abs( ap( i ) )
225 DO 100 i = k, k + j - 1
226 sum = sum + abs( ap( i ) )
230 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
236 DO 120 i = k + 1, k + n - j
237 sum = sum + abs( ap( i ) )
241 DO 130 i = k, k + n - j
242 sum = sum + abs( ap( i ) )
246 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
249 ELSE IF(
lsame( norm,
'I' ) )
THEN
254 IF(
lsame( uplo,
'U' ) )
THEN
255 IF(
lsame( diag,
'U' ) )
THEN
261 work( i ) = work( i ) + abs( ap( k ) )
272 work( i ) = work( i ) + abs( ap( k ) )
278 IF(
lsame( diag,
'U' ) )
THEN
285 work( i ) = work( i ) + abs( ap( k ) )
295 work( i ) = work( i ) + abs( ap( k ) )
304 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
306 ELSE IF( (
lsame( norm,
'F' ) ) .OR.
307 $ (
lsame( norm,
'E' ) ) )
THEN
311 IF(
lsame( uplo,
'U' ) )
THEN
312 IF(
lsame( diag,
'U' ) )
THEN
317 CALL dlassq( j-1, ap( k ), 1, scale, sum )
325 CALL dlassq( j, ap( k ), 1, scale, sum )
330 IF(
lsame( diag,
'U' ) )
THEN
335 CALL dlassq( n-j, ap( k ), 1, scale, sum )
343 CALL dlassq( n-j+1, ap( k ), 1, scale, sum )
348 VALUE = scale*sqrt( sum )
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,...
subroutine dlassq(n, x, incx, scale, sumsq)
DLASSQ updates a sum of squares represented in scaled form.