139 DOUBLE PRECISION FUNCTION zlantb( NORM, UPLO, DIAG, N, K, AB,
147 CHARACTER diag,
norm, uplo
151 DOUBLE PRECISION work( * )
152 COMPLEX*16 ab( ldab, * )
158 DOUBLE PRECISION one, zero
159 parameter( one = 1.0d+0, zero = 0.0d+0 )
164 DOUBLE PRECISION scale, sum, value
174 INTRINSIC abs,
max,
min, sqrt
184 IF( LSAME( DIAG, 'u
' ) ) THEN
186 IF( LSAME( UPLO, 'u
' ) ) THEN
188 DO 10 I = MAX( K+2-J, 1 ), K
189 SUM = ABS( AB( I, J ) )
190.LT..OR.
IF( VALUE SUM DISNAN( SUM ) ) VALUE = SUM
195 DO 30 I = 2, MIN( N+1-J, K+1 )
196 SUM = ABS( AB( I, J ) )
197.LT..OR.
IF( VALUE SUM DISNAN( SUM ) ) VALUE = SUM
203 IF( LSAME( UPLO, 'u
' ) ) THEN
205 DO 50 I = MAX( K+2-J, 1 ), K + 1
206 SUM = ABS( AB( I, J ) )
207.LT..OR.
IF( VALUE SUM DISNAN( SUM ) ) VALUE = SUM
212 DO 70 I = 1, MIN( N+1-J, K+1 )
213 SUM = ABS( AB( I, J ) )
214.LT..OR.
IF( VALUE SUM DISNAN( SUM ) ) VALUE = SUM
219 ELSE IF( ( LSAME( NORM, 'o.OR..EQ.
' ) ) ( NORM'1
' ) ) THEN
224 UDIAG = LSAME( DIAG, 'u
' )
225 IF( LSAME( UPLO, 'u
' ) ) THEN
229 DO 90 I = MAX( K+2-J, 1 ), K
230 SUM = SUM + ABS( AB( I, J ) )
234 DO 100 I = MAX( K+2-J, 1 ), K + 1
235 SUM = SUM + ABS( AB( I, J ) )
238.LT..OR.
IF( VALUE SUM DISNAN( SUM ) ) VALUE = SUM
244 DO 120 I = 2, MIN( N+1-J, K+1 )
245 SUM = SUM + ABS( AB( I, J ) )
249 DO 130 I = 1, MIN( N+1-J, K+1 )
250 SUM = SUM + ABS( AB( I, J ) )
253.LT..OR.
IF( VALUE SUM DISNAN( SUM ) ) VALUE = SUM
256 ELSE IF( LSAME( NORM, 'i
' ) ) THEN
261 IF( LSAME( UPLO, 'u
' ) ) THEN
262 IF( LSAME( DIAG, 'u
' ) ) THEN
268 DO 160 I = MAX( 1, J-K ), J - 1
269 WORK( I ) = WORK( I ) + ABS( AB( L+I, J ) )
278 DO 190 I = MAX( 1, J-K ), J
279 WORK( I ) = WORK( I ) + ABS( AB( L+I, J ) )
284 IF( LSAME( DIAG, 'u
' ) ) THEN
290 DO 220 I = J + 1, MIN( N, J+K )
291 WORK( I ) = WORK( I ) + ABS( AB( L+I, J ) )
300 DO 250 I = J, MIN( N, J+K )
301 WORK( I ) = WORK( I ) + ABS( AB( L+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
320 CALL ZLASSQ( MIN( J-1, K ),
321 $ AB( MAX( K+2-J, 1 ), J ), 1, SCALE,
329 CALL ZLASSQ( MIN( J, K+1 ), AB( MAX( K+2-J, 1 ), J ),
334 IF( LSAME( DIAG, 'u
' ) ) THEN
339 CALL ZLASSQ( MIN( N-J, K ), AB( 2, J ), 1, SCALE,
347 CALL ZLASSQ( MIN( N-J+1, K+1 ), AB( 1, J ), 1, SCALE,
352 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 zlantb(norm, uplo, diag, n, k, ab, ldab, work)
ZLANTB returns the value of the 1-norm, or the Frobenius norm, or the infinity norm,...