PROGRAM D10R3 C Driver for routine BRENT PARAMETER(TOL=1.0E-6,EQL=1.E-4) DIMENSION AMIN(20) EXTERNAL FUNC NMIN=0 WRITE(*,'(/1X,A)') 'Minima of the function BESSJ0' WRITE(*,'(/1X,T6,A,T19,A,T28,A,T40,A/)') 'Min. #','X', * 'BESSJ0(X)','BESSJ1(X)' DO 12 I=1,100 AX=I BX=I+1.0 CALL MNBRAK(AX,BX,CX,FA,FB,FC,FUNC) B=BRENT(AX,BX,CX,FUNC,TOL,XMIN) IF (NMIN.EQ.0) THEN AMIN(1)=XMIN NMIN=1 WRITE(*,'(1X,5X,I2,3X,3F12.6)') NMIN,XMIN, * BESSJ0(XMIN),BESSJ1(XMIN) ELSE IFLAG=0 DO 11 J=1,NMIN IF (ABS(XMIN-AMIN(J)).LE.EQL*XMIN) * IFLAG=1 11 CONTINUE IF (IFLAG.EQ.0) THEN NMIN=NMIN+1 AMIN(NMIN)=XMIN WRITE(*,'(1X,5X,I2,3X,3F12.6)') NMIN, * XMIN,BESSJ0(XMIN),BESSJ1(XMIN) ENDIF ENDIF 12 CONTINUE END FUNCTION FUNC(X) FUNC=BESSJ0(X) RETURN END