140 DOUBLE PRECISION FUNCTION zlantr( NORM, UPLO, DIAG, M, N, A, LDA,
148 CHARACTER diag,
norm, uplo
152 DOUBLE PRECISION work( * )
153 COMPLEX*16 a( lda, * )
159 DOUBLE PRECISION one, zero
160 parameter( one = 1.0d+0, zero = 0.0d+0 )
165 DOUBLE PRECISION scale, sum, value
175 INTRINSIC abs,
min, sqrt
179 IF(
min( m, n ).EQ.0 )
THEN
185 IF(
lsame( diag,
'U' ) )
THEN
187 IF(
lsame( uplo, 'u
' ) ) THEN
189 DO 10 I = 1, MIN( M, J-1 )
190 SUM = ABS( A( I, J ) )
191.LT..OR.
IF( VALUE SUM DISNAN( SUM ) ) VALUE = SUM
197 SUM = ABS( A( I, J ) )
198.LT..OR.
IF( VALUE SUM DISNAN( SUM ) ) VALUE = SUM
204 IF( LSAME( UPLO, 'u
' ) ) THEN
206 DO 50 I = 1, MIN( M, J )
207 SUM = ABS( A( I, J ) )
208.LT..OR.
IF( VALUE SUM DISNAN( SUM ) ) VALUE = SUM
214 SUM = ABS( A( I, J ) )
215.LT..OR.
IF( VALUE SUM DISNAN( SUM ) ) VALUE = SUM
220 ELSE IF( ( LSAME( NORM, 'o.OR..EQ.
' ) ) ( NORM'1
' ) ) THEN
225 UDIAG = LSAME( DIAG, 'u
' )
226 IF( LSAME( UPLO, 'u
' ) ) THEN
228.AND..LE.
IF( ( UDIAG ) ( JM ) ) THEN
231 SUM = SUM + ABS( A( I, J ) )
235 DO 100 I = 1, MIN( M, J )
236 SUM = SUM + ABS( A( I, J ) )
239.LT..OR.
IF( VALUE SUM DISNAN( SUM ) ) VALUE = SUM
246 SUM = SUM + ABS( A( I, J ) )
251 SUM = SUM + ABS( A( I, J ) )
254.LT..OR.
IF( VALUE SUM DISNAN( SUM ) ) VALUE = SUM
257 ELSE IF( LSAME( NORM, 'i
' ) ) THEN
261 IF( LSAME( UPLO, 'u
' ) ) THEN
262 IF( LSAME( DIAG, 'u
' ) ) THEN
267 DO 160 I = 1, MIN( M, J-1 )
268 WORK( I ) = WORK( I ) + ABS( A( I, J ) )
276 DO 190 I = 1, MIN( M, J )
277 WORK( I ) = WORK( I ) + ABS( A( I, J ) )
282 IF( LSAME( DIAG, 'u
' ) ) THEN
283 DO 210 I = 1, MIN( M, N )
291 WORK( I ) = WORK( I ) + ABS( A( I, J ) )
300 WORK( I ) = WORK( I ) + ABS( A( I, J ) )
308.LT..OR.
IF( VALUE SUM DISNAN( SUM ) ) VALUE = SUM
310 ELSE IF( ( LSAME( NORM, 'f.OR.
' ) ) ( LSAME( NORM, 'e
' ) ) ) THEN
314 IF( LSAME( UPLO, 'u
' ) ) THEN
315 IF( LSAME( DIAG, 'u
' ) ) THEN
319 CALL ZLASSQ( MIN( M, J-1 ), A( 1, J ), 1, SCALE, SUM )
325 CALL ZLASSQ( MIN( M, J ), A( 1, J ), 1, SCALE, SUM )
329 IF( LSAME( DIAG, 'u
' ) ) THEN
333 CALL ZLASSQ( M-J, A( MIN( M, J+1 ), J ), 1, SCALE,
340 CALL ZLASSQ( M-J+1, A( J, J ), 1, SCALE, SUM )
344 VALUE = SCALE*SQRT( SUM )
norm(diag(diag(diag(inv(mat))) -id.SOL), 2) % destroy mumps instance id.JOB
subroutine zlassq(n, x, incx, scl, sumsq)
ZLASSQ updates a sum of squares represented in scaled form.
logical function disnan(din)
DISNAN tests input for NaN.
logical function lsame(ca, cb)
LSAME
double precision function zlantr(norm, uplo, diag, m, n, a, lda, work)
ZLANTR returns the value of the 1-norm, or the Frobenius norm, or the infinity norm,...