www.pudn.com > Fortran.zip > ABINT.FOR, change:1994-06-13,size:641b


 
	SUBROUTINE ABINT(A,N,B,EPS,X,L,P,JS,R,E) 
	DIMENSION A(N,N),B(N),X(N),JS(N),P(N,N),R(N),E(N) 
	DOUBLE PRECISION A,B,X,P,R,E,Q,QQ 
	I=60 
	DO 10 K=1,N 
	DO 10 J=1,N 
10	P(K,J)=A(K,J) 
	DO 20 K=1,N 
20	E(K)=B(K) 
	CALL AGAUS(P,E,N,X,L,JS) 
	IF (L.EQ.0) RETURN 
5	IF (I.EQ.0) THEN 
	  L=0 
	  RETURN 
	END IF  
	I=I-1 
	CALL BRMUL(A,X,N,N,1,E) 
	DO 30 K=1,N 
30	R(K)=B(K)-E(K) 
	DO 40 K=1,N 
	DO 40 J=1,N 
40	P(K,J)=A(K,J) 
	CALL AGAUS(P,R,N,E,L,JS) 
	IF (L.EQ.0) RETURN 
	Q=0.0 
	DO 50 K=1,N 
	  QQ=ABS(E(K))/(1.0+ABS(X(K)+E(K))) 
	  IF (QQ.GT.Q) Q=QQ 
50	CONTINUE 
	DO 60 K=1,N 
60	X(K)=E(K)+X(K) 
	IF (Q.GE.EPS) GOTO 5 
	RETURN 
	END