15 & N,PIV,FRERE,FILS,NFSIZ,IKEEP,
16 & NCST,KEEP,KEEP8, ROWSCA
20 INTEGER,
INTENT(IN) :: N
21 INTEGER,
INTENT(OUT) :: NCST
22 INTEGER :: PIV(N),FRERE(N),FILS(N),NFSIZ(N),IKEEP(N)
24 INTEGER(8) :: KEEP8(150)
25 DOUBLE PRECISION :: ROWSCA(N)
26 INTEGER I,P11,P1,P2,K1,K2,NLOCKED
42 v2 = (k2+exponent(rowsca(p2)**2) .GE. -3)
71 keep(94) = keep(94) + keep(93) - nlocked
75 piv(nlocked) = frere(i)
80 DO i=(keep(93)/2)+1,(keep(93)/2)+ncst,2
84 DO i=(keep(93)/2)+ncst+1,(keep(93)/2)+keep(94)
91 INTEGER N11,N22,N,NCMP
92 INTEGER,
intent(in) :: PIV(N),PERM(N)
93 INTEGER,
intent (out):: INVPERM(N)
94 INTEGER CMP_POS,EXP_POS,I,J,,K
123 & N,NZ, IRN, ICN, PIV,
124 & NCMP, IW, LW, IPE, LEN, IQ,
126 & IERROR, KEEP,KEEP8, ICNTL,INPLACE64_GRAPH_COPY)
128 INTEGER,
intent(in) :: N
129 INTEGER(8),
intent(in) :: NZ, LW
130 INTEGER,
intent(in) :: IRN(NZ), ICN(NZ), PIV(N)
131 INTEGER,
intent(in) :: ICNTL(60)
132 INTEGER,
intent(in) :: KEEP(500)
133 INTEGER(8),
intent(in) :: KEEP8(150)
134 INTEGER,
intent(out) :: NCMP, IERROR
135 INTEGER(8),
intent(out) :: IWFR, IPE(N+1)
136 INTEGER,
intent(out) :: (LW)
137 INTEGER,
intent(out) :: LEN(N)
138 INTEGER(8),
intent(out) :: IQ(N)
139 INTEGER,
intent(out) :: FLAG(N), (N)
140 LOGICAL,
intent(inout) :: INPLACE64_GRAPH_COPY
141 INTEGER :: MP, N11, N22
142 INTEGER :: I, J, N1, K
143 INTEGER(8) :: NDUP, L, K8, K1, K2, LAST
174 IF ((i.GT.n).OR.(j.GT.n).OR.(i.LT.1)
180 IF ((i.NE.0).AND.(j.NE.0).AND.(i.NE.j))
THEN
181 ipe(i) = ipe(i) + 1_8
182 ipe(j) = ipe(j) + 1_8
190 iq(i+1) = ipe(i) + iq(i)
193 last =
max(ipe(ncmp)+iq(ncmp)-1_8,iq(ncmp))
203 IF ((i.GT.n).OR.(j.GT.n).OR.(i.LT.1)
204 & .OR.(j.LT.1)) cycle
209 IF ((i.GE.1).AND.(j.LE.n))
THEN
214 IF ((j.GE.1).AND.(i.LE.n))
THEN
230 IF (j.LE.0)
GO TO 250
233 IF (flag(j).EQ.i)
THEN
243 250 len(i) = int(iq(i) - ipe(i))
246 IF (ndup.NE.0_8)
THEN
250 IF (len(i).EQ.0)
THEN
258 IF (iw(k8).NE.0)
THEN
263 len(i) = int(iwfr - l)
266 ipe(ncmp+1) = ipe(ncmp) + int(len(ncmp),8)
268 inplace64_graph_copy = (lw.GE.2*(iwfr-1_8))
272 & N, NE, IP, IRN, SCALING,LSC,CPERM, DIAG,
273 & ICNTL, WEIGHT,MARKED,FLAG,
276 INTEGER,
INTENT(IN) :: N
277 INTEGER(8),
INTENT(IN) :: NE
278 INTEGER :: ICNTL(10), INFO(10),LSC
279 INTEGER :: CPERM(N),(N), IRN(NE), DIAG(N)
280 INTEGER(8),
INTENT(IN) :: IP(N+1)
281 DOUBLE PRECISION :: SCALING(LSC),WEIGHT(N+2)
282 INTEGER :: MARKED(N),FLAG()
283 INTEGER :: NUM1,NUM2,NUMTOT,PATH_LENGTH,NLAST
284 INTEGER :: I,BEST_BEG, CUR_EL,CUR_EL_PATH,CUR_EL_PATH_NEXT
285 INTEGER :: L1,,TUP,T22
286 INTEGER(8) :: PTR_SET1,PTR_SET2
287 DOUBLE PRECISION :: BEST_SCORE,CUR_VAL,TMP,VAL
288 DOUBLE PRECISION INITSCORE, DMUMPS_UPDATESCORE,
290 LOGICAL VRAI,FAUX,MAX_CARD_DIAG,USE_SCALING
292 DOUBLE PRECISION ZERO,ONE
293 parameter(sum = 1, vrai = .true., faux = .false.)
294 parameter(zero = 0.0d0, one = 1.0d0)
295 max_card_diag = .true.
307 use_scaling = .false.
310 IF(tup .EQ. sum)
THEN
315 IF(icntl(2) .GT. 2 .OR. icntl(2) .LE. 0)
THEN
317 &
'ERROR: WRONG VALUE FOR ICNTL(2) = ',icntl(
322 IF(icntl(1) .LT. 0 .OR. icntl(1) .GT. 2)
THEN
324 & 'error: wrong
VALUE for icntl(1) =
',ICNTL(1)
329.LE.
IF(MARKED(CUR_EL) 0) THEN
332.LT.
IF(CPERM(CUR_EL) 0) THEN
337 CUR_EL_PATH = CPERM(CUR_EL)
338.EQ.
IF(CUR_EL_PATH CUR_EL) THEN
343 WEIGHT(1) = INITSCORE
344 WEIGHT(2) = INITSCORE
345 L1 = int(IP(CUR_EL+1)-IP(CUR_EL))
346 L2 = int(IP(CUR_EL_PATH+1)-IP(CUR_EL_PATH))
347 PTR_SET1 = IP(CUR_EL)
348 PTR_SET2 = IP(CUR_EL_PATH)
350 VAL = -SCALING(CUR_EL_PATH) - SCALING(CUR_EL+N)
352 CUR_VAL = DMUMPS_METRIC2x2(
353 & CUR_EL,CUR_EL_PATH,
354 & IRN(PTR_SET1),IRN(PTR_SET2),
356 & VAL,DIAG,N,FLAG,FAUX,T22)
357 WEIGHT(PATH_LENGTH+1) =
358 & DMUMPS_UPDATESCORE(WEIGHT(1),CUR_VAL,TUP)
360.EQ.
IF(CUR_EL_PATH CUR_EL) EXIT
361 PATH_LENGTH = PATH_LENGTH+1
362 MARKED(CUR_EL_PATH) = 0
363 CUR_EL_PATH_NEXT = CPERM(CUR_EL_PATH)
364 L1 = int(IP(CUR_EL_PATH+1)-IP(CUR_EL_PATH))
365 L2 = int(IP(CUR_EL_PATH_NEXT+1)-IP(CUR_EL_PATH_NEXT))
366 PTR_SET1 = IP(CUR_EL_PATH)
367 PTR_SET2 = IP(CUR_EL_PATH_NEXT)
369 VAL = -SCALING(CUR_EL_PATH_NEXT)
370 & - SCALING(CUR_EL_PATH+N)
372 CUR_VAL = DMUMPS_METRIC2x2(
373 & CUR_EL_PATH,CUR_EL_PATH_NEXT,
374 & IRN(PTR_SET1),IRN(PTR_SET2),
376 & VAL,DIAG,N,FLAG,VRAI,T22)
377 WEIGHT(PATH_LENGTH+1) =
378 & DMUMPS_UPDATESCORE(WEIGHT(PATH_LENGTH-1),CUR_VAL,TUP)
379 CUR_EL_PATH = CUR_EL_PATH_NEXT
381.EQ.
IF(mod(PATH_LENGTH,2) 1) THEN
382.GE.
IF(WEIGHT(PATH_LENGTH+1) WEIGHT(PATH_LENGTH)) THEN
383 CUR_EL_PATH = CPERM(CUR_EL)
387 DO I=1,(PATH_LENGTH-1)/2
389 PIV_OUT(NUM2) = CUR_EL_PATH
390 CUR_EL_PATH = CPERM(CUR_EL_PATH)
392 PIV_OUT(NUM2) = CUR_EL_PATH
393 CUR_EL_PATH = CPERM(CUR_EL_PATH)
395 NUMTOT = NUMTOT + PATH_LENGTH - 1
397 IF(MAX_CARD_DIAG) THEN
398 CUR_EL_PATH = CPERM(CUR_EL)
399.NE.
IF(DIAG(CUR_EL) 0) THEN
400 BEST_BEG = CUR_EL_PATH
403 DO I=1,(PATH_LENGTH/2)
404 CUR_EL_PATH_NEXT = CPERM(CUR_EL_PATH)
405.NE.
IF(DIAG(CUR_EL_PATH) 0) THEN
406 BEST_BEG = CUR_EL_PATH_NEXT
412 BEST_SCORE = WEIGHT(PATH_LENGTH-1)
413 CUR_EL_PATH = CPERM(CUR_EL)
414 DO I=1,(PATH_LENGTH/2)-1
415 TMP = DMUMPS_UPDATESCORE(WEIGHT(PATH_LENGTH),
417 TMP = DMUMPS_UPDATE_INVERSE(TMP,WEIGHT(2*I),TUP)
418.GT.
IF(TMP BEST_SCORE) THEN
420 BEST_BEG = CUR_EL_PATH
422 CUR_EL_PATH = CPERM(CUR_EL_PATH)
423 TMP = DMUMPS_UPDATESCORE(WEIGHT(PATH_LENGTH+1),
425 TMP = DMUMPS_UPDATE_INVERSE(TMP,WEIGHT(2*I+1),TUP)
426.GT.
IF(TMP BEST_SCORE) THEN
428 BEST_BEG = CUR_EL_PATH
430 CUR_EL_PATH = CPERM(CUR_EL_PATH)
432 1000 CUR_EL_PATH = BEST_BEG
433 DO I=1,(PATH_LENGTH/2)-1
435 PIV_OUT(NUM2) = CUR_EL_PATH
436 CUR_EL_PATH = CPERM(CUR_EL_PATH)
438 PIV_OUT(NUM2) = CUR_EL_PATH
439 CUR_EL_PATH = CPERM(CUR_EL_PATH)
441 NUMTOT = NUMTOT + PATH_LENGTH - 2
442 MARKED(CUR_EL_PATH) = -1
446.LT.
IF(MARKED(I) 0) THEN
447.EQ.
IF(DIAG(I) 0) THEN
452 PIV_OUT(NUM2+NUM1) = I
461 END SUBROUTINE DMUMPS_SYM_MWM
462 FUNCTION DMUMPS_UPDATESCORE(A,B,T)
464 DOUBLE PRECISION DMUMPS_UPDATESCORE
470 DMUMPS_UPDATESCORE = A+B
472 DMUMPS_UPDATESCORE = A*B
474 END FUNCTION DMUMPS_UPDATESCORE
475 FUNCTION DMUMPS_UPDATE_INVERSE(A,B,T)
477 DOUBLE PRECISION DMUMPS_UPDATE_INVERSE
483 DMUMPS_UPDATE_INVERSE = A-B
485 DMUMPS_UPDATE_INVERSE = A/B
487 END FUNCTION DMUMPS_UPDATE_INVERSE
488 FUNCTION DMUMPS_METRIC2x2(CUR_EL,CUR_EL_PATH,
489 & SET1,SET2,L1,L2,VAL,DIAG,N,FLAG,FLAGON,T)
491 DOUBLE PRECISION DMUMPS_METRIC2x2
492 INTEGER CUR_EL,CUR_EL_PATH,L1,L2,N
493 INTEGER SET1(L1),SET2(L2),DIAG(N),FLAG(N)
497 INTEGER I,INTER,MERGE
499 PARAMETER(STRUCT=0,MA47=1)
500.EQ.
IF(T STRUCT) THEN
501.NOT.
IF( FLAGON) THEN
503 FLAG(SET1(I)) = CUR_EL
508.EQ.
IF(FLAG(SET2(I)) CUR_EL) THEN
510 FLAG(SET2(I)) = CUR_EL_PATH
513 MERGE = L1 + L2 - INTER
514 DMUMPS_METRIC2x2 = dble(INTER) / dble(MERGE)
515.EQ.
ELSE IF (T MA47) THEN
517.NE.
IF(DIAG(CUR_EL) 0) MERGE = 2
518.NE.
IF(DIAG(CUR_EL_PATH) 0) MERGE = MERGE - 2
520 DMUMPS_METRIC2x2 = dble(L1+L2-2)
521 DMUMPS_METRIC2x2 = -(DMUMPS_METRIC2x2**2)/2.0D0
522.EQ.
ELSE IF(MERGE 1) THEN
523 DMUMPS_METRIC2x2 = - dble(L1+L2-4) * dble(L1-2)
524.EQ.
ELSE IF(MERGE 2) THEN
525 DMUMPS_METRIC2x2 = - dble(L1+L2-4) * dble(L2-2)
527 DMUMPS_METRIC2x2 = - dble(L1-2) * dble(L2-2)
530 DMUMPS_METRIC2x2 = VAL
534 SUBROUTINE DMUMPS_EXPAND_PERM_SCHUR(NA, NCMP,
536 & LISTVAR_SCHUR, SIZE_SCHUR, AOTOA)
538 INTEGER, INTENT(IN):: SIZE_SCHUR, LISTVAR_SCHUR(SIZE_SCHUR)
539 INTEGER, INTENT(IN):: NA, NCMP
540 INTEGER, INTENT(IN):: AOTOA(NCMP), PERM(NCMP)
541 INTEGER, INTENT(OUT):: INVPERM(NA)
542 INTEGER CMP_POS, IO, I, K, IPOS
545 INVPERM(AOTOA(IO)) = CMP_POS
554 END SUBROUTINE DMUMPS_EXPAND_PERM_SCHUR
555 SUBROUTINE DMUMPS_GNEW_SCHUR
556 & (NA, N, NZ, IRN, ICN, IW, LW, IPE, LEN,
558 & NRORM, NIORM, IFLAG,IERROR, ICNTL,
559 & symmetry, SYM, NBQD, AvgDens,
561 & LISTVAR_SCHUR, SIZE_SCHUR, ATOAO, AOTOA,
562 & INPLACE64_GRAPH_COPY
565 INTEGER, intent(in) :: NA
566 INTEGER, intent(in) :: N, SYM
567 INTEGER(8), intent(in) :: NZ, LW
568 INTEGER, intent(in) :: ICNTL(60)
569 INTEGER, intent(in) :: IRN(NZ), ICN(NZ)
570 INTEGER, INTENT(IN) :: SIZE_SCHUR, LISTVAR_SCHUR(SIZE_SCHUR)
571 INTEGER, intent(out) :: IERROR, symmetry
572 INTEGER, intent(out) :: NBQD, AvgDens
573 INTEGER, intent(out) :: LEN(N), IW(LW)
574 INTEGER(8), intent(out):: IWFR
575 INTEGER(8), intent(out):: NRORM, NIORM
576 INTEGER(8), intent(out):: IPE(N+1)
577 INTEGER, INTENT(OUT) :: AOTOA(N)
578 INTEGER, INTENT(OUT) :: ATOAO(NA)
579 INTEGER, intent(inout) :: IFLAG, KEEP264
580 INTEGER, intent(in) :: KEEP265
581 INTEGER(8), intent(out):: IQ(N)
582 INTEGER, intent(out) :: FLAG(N)
583 LOGICAL, intent(inout) :: INPLACE64_GRAPH_COPY
584 INTEGER :: MP, MPG, I, J, N1
585 INTEGER :: NBERR, THRESH, IAO
586 INTEGER(8) :: K8, K1, K2, LAST, NDUP
587 INTEGER(8) :: NZOFFA, NDIAGA, L, N8
588 DOUBLE PRECISION :: RSYM
594 ATOAO(LISTVAR_SCHUR(I)) = -1
598.LT.
IF (ATOAO(I)0) CYCLE
610.EQ.
IF (KEEP2640) THEN
611.EQ..AND..EQ.
IF ((SYM0)(KEEP265-1)) THEN
615.GT..OR..GT..OR..LT.
IF ((INA)(JNA)(I1)
621.LT..OR..LT.
IF ((I0)(J0)) CYCLE
623 IPE(I) = IPE(I) + 1_8
624 NZOFFA = NZOFFA + 1_8
626 NDIAGA = NDIAGA + 1_8
634.GT..OR..GT..OR..LT.
IF ((INA)(JNA)(I1)
640.LT..OR..LT.
IF ((I0)(J0)) CYCLE
642 IPE(I) = IPE(I) + 1_8
643 IPE(J) = IPE(J) + 1_8
644 NZOFFA = NZOFFA + 1_8
646 NDIAGA = NDIAGA + 1_8
651.GE.
IF (IERROR1) THEN
657.EQ..AND..EQ.
IF ((SYM0)(KEEP265-1)) THEN
663.LT..OR..LT.
IF ((I0)(J0)) CYCLE
665 NDIAGA = NDIAGA + 1_8
667 IPE(I) = IPE(I) + 1_8
668 NZOFFA = NZOFFA + 1_8
677.LT..OR..LT.
IF ((I0)(J0)) CYCLE
679 IPE(I) = IPE(I) + 1_8
680 IPE(J) = IPE(J) + 1_8
681 NZOFFA = NZOFFA + 1_8
683 NDIAGA = NDIAGA + 1_8
688 NIORM = NZOFFA + 3_8*N8
689.GE.
IF (IERROR1) THEN
691.EQ.
IF (mod(IFLAG,2) 0) IFLAG = IFLAG+1
692.GT..AND..GE.
IF ((MP0)(ICNTL(4)2)) THEN
697.GT..OR..GT..OR..LT.
IF ((INA)(JNA)(I1)
700.LE.
IF (NBERR10) THEN
701.GT..OR..EQ..OR.
IF (mod(K8,10_8)3_8 mod(K8,10_8)0_8
702.LE..AND..LE.
& (10_8K8 K820_8)) THEN
703 WRITE (MP,'(i16,a,i10,a,i10,a)
')
704 & K8,'th entry
',I,'',J,') ignored
'
706.EQ.
IF (mod(K8,10_8)1_8)
707 & WRITE(MP,'(i16,a,i10,a,i10,a)
')
708 & K8,'st entry(in row
',I,' and column
',J,') ignored
'
709.EQ.
IF (mod(K8,10_8)2_8)
710 & WRITE(MP,'(i16,a,i10,a,i10,a)
')
711 & K8,'nd entry(in row
',I,' and column
',J,') ignored
'
712.EQ.
IF (mod(K8,10_8)3_8)
713 & WRITE(MP,'(i16,a,i10,a,i10,a)
')
714 & K8,'rd entry(in row
',I,' and column
',J,') ignored
'
723 100 NRORM = NIORM - 2_8*N8
728 IQ(I+1) = IPE(I) + IQ(I)
731 LAST = max(IPE(N)+IQ(N)-1,IQ(N))
736.EQ.
IF (KEEP264 0) THEN
737.EQ..AND..EQ.
IF ((SYM0)(KEEP265-1)) THEN
741.GT..OR..GT..OR..LT.
IF ((INA)(JNA)(I1)
742.OR..LT.
& (J1)) CYCLE
745.LT..OR..LT.
IF ((I0)(J0)) CYCLE
747.GE..AND..LE.
IF ((J1)(IN)) THEN
753.EQ.
ELSE IF (KEEP2651) THEN
757.GT..OR..GT..OR..LT.
IF ((INA)(JNA)(I1)
758.OR..LT.
& (J1)) CYCLE
761.LT..OR..LT.
IF ((I0)(J0)) CYCLE
763.GE..AND..LE.
IF ((J1)(IN)) THEN
775.GT..OR..GT..OR..LT.
IF ((INA)(JNA)(I1)
776.OR..LT.
& (J1)) CYCLE
779.LT..OR..LT.
IF ((I0)(J0)) CYCLE
782.GE..AND..LE.
IF ((I1)(JN)) THEN
787.GE..AND..LE.
IF ((J1)(IN)) THEN
796.EQ..AND..EQ.
IF ((SYM0)(KEEP265-1)) THEN
802.LT..OR..LT.
IF ((I0)(J0)) CYCLE
808.EQ.
ELSE IF (KEEP2651) THEN
814.LT..OR..LT.
IF ((I0)(J0)) CYCLE
828.LT..OR..LT.
IF ((I0)(J0)) CYCLE
841.EQ.
IF (KEEP2650) THEN
852.EQ.
IF (FLAG(J)I) THEN
863 LEN(I) = int(IQ(I) - IPE(I))
866.NE.
IF (NDUP0_8) THEN
869.EQ.
IF (LEN(I)0) THEN
878.NE.
IF (IW(K8)0) THEN
883 LEN(I) = int(IWFR - L)
886 IPE(N+1) = IPE(N) + int(LEN(N),8)
891 LEN(I) = int(IQ(I) - IPE(I))
894 IPE(I+1) = IPE(I) + int(LEN(I),8)
900 RSYM = dble(NDIAGA+2_8*NZOFFA - (IWFR-1_8))/
901 & dble(NZOFFA+NDIAGA)
902.EQ..AND..EQ.
IF ((KEEP2650) (NZOFFA - (IWFR-1_8))0_8) THEN
904 symmetry = nint (100.0D0*RSYM)
905.GT..AND..GE.
IF ((MPG 0)(ICNTL(4)2) )
906 & write(MPG,'(a,a,i5)
')
908 & ' structural symmetry(in percent) of interior block=
',
910.GT..AND..NE..AND..GE.
IF (MP0 MPGMP (ICNTL(4)2) )
911 & write(MP,'(a,a,i5)
')
913 & ' structural symmetry(in percent) of interior block=
',
918.GE.
INPLACE64_GRAPH_COPY = (LW2*(IWFR-1))
919 AvgDens = nint(dble(IWFR-1_8)/dble(N))
920 THRESH = AvgDens*50 - AvgDens/10 + 1
925.GT.
IF (JTHRESH) NBQD = NBQD+1
928.GT..AND..GE.
IF (MPG 0(ICNTL(4)2))
929 & write(MPG,'(a,1i5)
')
930 & ' average density of rows/columns =
', AvgDens
931.GT..AND..NE..AND..GE.
IF (MP0 MPGMP(ICNTL(4)2))
932 & write(MPG,'(a,1i5)
')
933 & ' average density of rows/columns =
', AvgDens
93599999 FORMAT (/'*** warning message from analysis routine ***
')
936 END SUBROUTINE DMUMPS_GNEW_SCHUR
937 SUBROUTINE DMUMPS_GET_PERM_FROM_PE(N,PE,INVPERM,NFILS,WORK)
940 INTEGER PE(N),INVPERM(N),NFILS(N),WORK(N)
941 INTEGER I,FATHER,STKLEN,STKPOS,PERMPOS,CURVAR
945.NE.
IF(FATHER 0) NFILS(FATHER) = NFILS(FATHER) + 1
950.EQ.
IF(NFILS(I) 0) THEN
954 PERMPOS = PERMPOS + 1
958 CURVAR = WORK(STKPOS)
961.EQ.
IF(FATHER 0) EXIT
962.EQ.
IF(NFILS(FATHER) 1) THEN
963 INVPERM(FATHER) = PERMPOS
965 PERMPOS = PERMPOS + 1
967 NFILS(FATHER) = NFILS(FATHER) - 1
973 END SUBROUTINE DMUMPS_GET_PERM_FROM_PE
974 SUBROUTINE DMUMPS_GET_ELIM_TREE(N,PE,NV,WORK)
977 INTEGER PE(N),NV(N),WORK(N)
978 INTEGER I,FATHER,LEN,NEWSON,NEWFATHER
980.GT.
IF(NV(I) 0) CYCLE
985.GT.
IF(NV(FATHER) 0) THEN
994 NEWFATHER = -PE(FATHER)
995 PE(WORK(LEN)) = -NEWFATHER
996 PE(NEWSON) = -WORK(1)
998 END SUBROUTINE DMUMPS_GET_ELIM_TREE
subroutine dmumps_expand_permutation(n, ncmp, n11, n22, piv, invperm, perm)
subroutine dmumps_set_constraints(n, piv, frere, fils, nfsiz, ikeep, ncst, keep, keep8, rowsca)
subroutine dmumps_sym_mwm(n, ne, ip, irn, scaling, lsc, cperm, diag, icntl, weight, marked, flag, piv_out, info)
double precision function dmumps_metric2x2(cur_el, cur_el_path, set1, set2, l1, l2, val, diag, n, flag, flagon, t)
subroutine dmumps_ldlt_compress(n, nz, irn, icn, piv, ncmp, iw, lw, ipe, len, iq, flag, icmp, iwfr, ierror, keep, keep8, icntl, inplace64_graph_copy)
double precision function dmumps_update_inverse(a, b, t)
for(i8=*sizetab-1;i8 >=0;i8--)