invalm
C INVALM SOURCE PV 21/12/14 21:15:06 11221 C C INVERSION D UNE MATRICE MM,MM CONTENUE DS UNE MATRICE LL,LL C CETTE MATRICE EST DANS LE COIN SUPERIEUR GAUCHE C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) DIMENSION D(1) ** write(6,*) 'invalm entree ',ll,mm ** do i=1,mm ** write(6,*) (d((i-1)*ll+j),j=1,mm) ** enddo KERRE=0 zprec=0.d0 do i=1,mm do j=1,mm IJ=LL*(I-1)+J zprec=max(zprec,abs(d(ij))) enddo enddo zprec=zprec*prec DO 200 N=1,MM NN=LL*(N-1)+N DIAG=D(NN) IF(ABS(DIAG).LE.ZPREC) THEN ** write(6,*) ' invalm erreur ',NN KERRE=49 RETURN ENDIF DIAG=1./DIAG DO 100 J=1,MM NJ=LL*(N-1)+J D(NJ)=-D(NJ)*DIAG 100 continue DO 150 I=1,MM IN=LL*(I-1)+N IF(I.EQ.N) GO TO 150 DO 140 J=1,MM IF(J.EQ.N) GO TO 140 NJ=LL*(N-1)+J IJ=LL*(I-1)+J D(IJ)=D(IJ)+D(IN)*D(NJ) 140 CONTINUE D(IN)=D(IN)*DIAG 150 continue D(NN)=DIAG 200 continue * write(6,*) 'invalm sortie ',ll,mm * do i=1,mm * write(6,*) (d((i-1)*ll+j),j=1,mm) * enddo RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales