C Gauss Elimination Complex Valued Matix Solver for up to 10 equations. COMPLEX S,YIK,YKK,Y(10,11) ! Y(row,column) PI=3.14159265 WRITE(*,FMT='(/'' Complex Valued Matix Solver'')') 80 WRITE(*,*) ' ' WRITE(*,*) 'NUMBER OF EQUATIONS?' READ(*,*) N IF(N.LT.1) STOP IF(N.GT.10) THEN WRITE(*,*) 'INVALID NUMBER OF EQUATIONS' STOP ENDIF N1=N+1 ! ADD ONE MORE COLUMN ON THE RIGHT WRITE(*,FMT='('' ENTER COMPLEX NUMBERS AS (#,#) (#,#) ...'')') DO 90 I=1,N WRITE(*,FMT='('' ENTER ROW'',I4,'' COEFF AND RHS:'')'),I READ(*,*) (Y(I,J),J=1,N1) WRITE(*,*) (Y(I,J),J=1,N1) 90 CONTINUE C SOLVE THE MATRIX USING ROW ADDITION OPERATIONS TO ZERO THE OFF-DIAGONALS DO 130 K=1,N ! matrix row K (this begins an outer loop) YKK=1.D0/Y(K,K) ! double precision inverse of the diagonal DO 100 J=K,N1 ! column J to the right of the diagonal 100 Y(K,J)=Y(K,J)*YKK ! normalize the row so the diagonal is 1 DO 120 I=1,N ! modify all rows 1 through N, except K IF(I.EQ.K) GOTO 120 ! skip the modification of row K YIK=Y(I,K) ! remember the off diagonal value at I,K DO 110 J=1,N1 ! sweep across all columns J from 1 to N1 110 Y(I,J)=Y(I,J)-Y(K,J)*YIK ! add scaled row K to row I 120 CONTINUE ! end of loop for row I 130 CONTINUE ! end of loop for row K C PRINT OUT THE RESULTS DO 140 I=1,N S=Y(I,N1) T1=0. IF(ABS(S).GT.0.) T1=ATAN2(AIMAG(S),REAL(S))*180./PI 140 WRITE(*,*) ABS(S),"MAGNITUDE",T1,"DEGREES" IF(1.EQ.1) GOTO 80 ! the 1.EQ.1 avoids a warning error message STOP END