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


 
	SUBROUTINE ATRDE(B,N,M,D,L) 
	DIMENSION B(M),D(N) 
	DOUBLE PRECISION B,D 
	L=1 
	IF (M.NE.(3*N-2)) THEN 
	  L=-1 
	  WRITE(*,10) 
	  RETURN 
	END IF 
10	FORMAT(1X,'  ERR  ') 
	DO 20 K=1,N-1 
	  J=3*K-2 
	  IF (ABS(B(J))+1.0.EQ.1.0) THEN 
	    L=0 
	    WRITE(*,10) 
	    RETURN 
	  END IF 
	  B(J+1)=B(J+1)/B(J) 
	  D(K)=D(K)/B(J) 
	  B(J+3)=B(J+3)-B(J+2)*B(J+1) 
	  D(K+1)=D(K+1)-B(J+2)*D(K) 
20	CONTINUE 
	IF (ABS(B(3*N-2))+1.0.EQ.1.0) THEN 
	  L=0 
	  WRITE(*,10) 
	  RETURN 
	END IF 
	D(N)=D(N)/B(3*N-2) 
	DO 30 K=N-1,1,-1 
	  D(K)=D(K)-B(3*K-1)*D(K+1) 
30	CONTINUE 
	RETURN 
	END