www.pudn.com > Fortran.zip > JMAX1.FOR, change:1994-06-10,size:1102b


 
	SUBROUTINE JMAX1(X,Z,K,M,EPS,FS) 
	DIMENSION Y(10),B(10) 
	DOUBLE PRECISION Y,B,X,Z,XX,DY,H1,H2,DX 
	M=10 
10	J=0 
20	IF (J.LE.2) THEN 
	  XX=X+0.01*J 
	ELSE 
	  XX=H2 
	END IF 
	CALL FS(XX,Z,DY) 
	IF (ABS(DY).GT.EPS) THEN 
	  H1=DY 
	  H2=XX 
	  IF (J.EQ.0) THEN 
	    Y(1)=H1 
	    B(1)=H2 
	  ELSE 
	    Y(J+1)=H1 
	    DO 30 I=1,J 
	      H2=H2-B(I) 
	      IF (ABS(H2)+1.0D0.EQ.1.0D0) THEN 
	        H2=SIGN(1.0D+35,H2) 
	        H2=H2*SIGN(1.0D0,H1-Y(I)) 
	      ELSE 
	        H2=(H1-Y(I))/H2 
	      END IF 
30	    CONTINUE 
	    B(J+1)=H2 
	    H2=0.0 
	    DO 40 I=J,1,-1 
	      H2=B(I+1)+H2 
	      IF (ABS(H2)+1.0D0.EQ.1.0D0) THEN 
	        H2=SIGN(1.0D+35,H2) 
	        H2=H2*SIGN(1.0D0,-Y(I)) 
	      ELSE 
	        H2=-Y(I)/H2 
	      END IF 
40	    CONTINUE 
	    H2=H2+B(1) 
	  END IF 
	  J=J+1 
	  IF (J.LE.7) GOTO 20 
	  X=H2 
	  M=M-1 
	  IF (M.NE.0) GOTO 10 
	  XX=X 
	END IF 
	X=XX 
	IF (ABS(X).LE.1.0) THEN 
	  DX=1.0E-05 
	ELSE 
	  DX=ABS(X*1.0E-05) 
	END IF 
	XX=X-DX 
	CALL FS(XX,H1,DY) 
	XX=X+DX 
	CALL FS(XX,H2,DY) 
	K=0 
	IF ((H1+H2-2*Z).LE.0.0) K=1 
	RETURN 
	END