www.pudn.com > Fortran.zip > ALDLE.FOR, change:1994-06-12,size:1076b


 
	SUBROUTINE ALDLE(A,N,M,C,L) 
	DIMENSION A(N,N),C(N,M) 
	DOUBLE PRECISION A,C 
	L=1 
	IF (ABS(A(1,1))+1.0.EQ.1.0) THEN 
	  L=0 
	  WRITE(*,10) 
	  RETURN 
	END IF 
10	FORMAT(1X,'FAIL') 
	DO 20 I=2,N 
20	A(I,1)=A(I,1)/A(1,1) 
	DO 60 I=2,N-1 
	  DO 30 J=2,I 
30	  A(I,I)=A(I,I)-A(I,J-1)*A(I,J-1)*A(J-1,J-1) 
	  DO 50 K=I+1,N 
	    DO 40 J=2,I 
40	    A(K,I)=A(K,I)-A(K,J-1)*A(I,J-1)*A(J-1,J-1) 
	    IF (ABS(A(I,I))+1.0.EQ.1.0) THEN 
	      L=0 
	      WRITE(*,10) 
	      RETURN 
	    END IF 
	    A(K,I)=A(K,I)/A(I,I) 
50	  CONTINUE 
60	CONTINUE 
	DO 70 J=2,N 
70	A(N,N)=A(N,N)-A(N,J-1)*A(N,J-1)*A(J-1,J-1) 
	DO 80 J=1,M 
	DO 80 I=2,N 
	DO 80 K=2,I 
80	C(I,J)=C(I,J)-A(I,K-1)*C(K-1,J) 
	DO 90 I=2,N 
	DO 90 J=I,N 
90	A(I-1,J)=A(I-1,I-1)*A(J,I-1) 
	IF (ABS(A(N,N))+1.0.EQ.1.0) THEN 
	  L=0 
	  WRITE(*,10) 
	  RETURN 
	END IF 
	DO 150 J=1,M 
	  C(N,J)=C(N,J)/A(N,N) 
	  DO 140 K=2,N 
	    K1=N-K+2 
	    DO 130 K2=K1,N 
	      K3=N-K+1 
	      C(K3,J)=C(K3,J)-A(K3,K2)*C(K2,J) 
130	    CONTINUE 
	    C(K3,J)=C(K3,J)/A(K3,K3) 
140	  CONTINUE 
150	CONTINUE 
	RETURN 
	END