SUBROUTINE ZSU(A,INT,X,N,NC,EMACH) IMPLICIT NONE C ------------------------------------------------------------------ C ZSU IS A STANDARD BACK-SUBSTITUTION SUBROUTINE USING THE C OUTPUT OF ZGE TO CALCULATE A-INVERSE TIMES X, RETURNED IN X C ------------------------------------------------------------------ C C .. SCALAR ARGUMENTS .. C INTEGER N,NC REAL*8 EMACH C C .. ARRAY ARGUMENTS .. C INTEGER INT(NC) COMPLEX*16 A(NC,NC),X(NC) C C .. LOCAL SCALARS .. C INTEGER I,II,IN,J,IJ COMPLEX*16 DUM C C .. INTRINSIC FUNCTIONS .. C * INTRINSIC ABS C ------------------------------------------------------------------ C DO 5 II=2,N I=II-1 IF(INT(I)-I)1,2,1 !If INT(I).NE.I switch the I-th and INT(I)-th !elements of the vector X 1 IN=INT(I) DUM=X(IN) X(IN)=X(I) X(I)=DUM * * Forming a matrix product * 2 DO 4 J=II,N IF(ABS(A(J,I))-EMACH)4,4,3 3 X(J)=X(J)-A(J,I)*X(I) 4 CONTINUE 5 CONTINUE !the I-th column of A multiplied by X(I) !subtracted from X * DO 10 II=1,N I=N-II+1 IJ=I+1 IF(I-N)6,8,6 6 DO 7 J=IJ,N 7 X(I)=X(I)-A(I,J)*X(J) 8 IF(ABS(A(I,I))-EMACH*1.0D-7)9,10,10 9 A(I,I)=EMACH*1.0D-7*(1.D0,1.D0) 10 X(I)=X(I)/A(I,I) RETURN END