C ________________________________________________________ C | | C |SOLVE THE TRANSPOSE OF A GENERAL COMPLEX FACTORED SYSTEM| C | | C | INPUT: | C | | C | A --CFACT'S OUTPUT | C | | C | B --COMPLEX RIGHT SIDE | C | | C | OUTPUT: | C | | C | X --SOLUTION (CAN BE IDENTIFIED WITH B | C | ALTHOUGH THE RIGHT SIDE IS DESTROYED) | C | | C | BUILTIN FUNCTIONS: CABS,INT | C |________________________________________________________| C SUBROUTINE CTRANS(X,A,B) COMPLEX A(1),B(1),X(1),T INTEGER I,J,K,L,M,N I = INT(A(1)) IF ( IABS(I) .EQ. 1239 ) GOTO 10 WRITE(6,*) 'ERROR: MUST FACTOR WITH CFACT BEFORE SOLVING' STOP 10 N = INT(A(2)) M = N + 1 IF ( I .LT. 0. ) GOTO 80 T = 0. J = 4 K = 1 C ------------------------- C |*** SKIP OVER ZEROS ***| C ------------------------- 20 IF ( B(K) .NE. 0. ) GOTO 30 X(K) = 0. K = K + 1 IF ( K .LE. N ) GOTO 20 RETURN C --------------------------- C |*** FORE SUBSTITUTION ***| C --------------------------- 30 J = J - M + M*K 40 X(K) = (B(K)-T)/A(J+K) IF ( K .EQ. N ) GOTO 60 T = 0. J = J + M DO 50 I = 1,K 50 T = T + A(I+J)*X(I) K = K + 1 GOTO 40 C --------------------------- C |*** BACK SUBSTITUTION ***| C --------------------------- 60 IF ( K .EQ. 1 ) RETURN J = J - M T = X(K-1) DO 70 I = K,N 70 T = T - X(I)*A(I+J) K = K - 1 I = INT(A(J)) X(K) = X(I) X(I) = T GOTO 60 C ----------------------------- C |*** COMPUTE NULL VECTOR ***| C ----------------------------- 80 I = 5 + N + M*N L = M 90 I = I - M - 1 L = L - 1 IF ( CABS(A(I)) .NE. 0. ) GOTO 90 K = L J = I - K DO 100 I = 1,N 100 X(I) = 0. X(K) = 1. 110 IF ( K .EQ. N ) GOTO 60 T = 0. J = J + M DO 120 I = L,K 120 T = T - A(I+J)*X(I) K = K + 1 X(K) = T/A(J+K) GOTO 110 END