PROGRAM xgolden ! driver for routine golden USE nrtype USE nr IMPLICIT NONE REAL(SP), PARAMETER :: TOL=1.0e-6_sp,EQL=1.0e-3_sp INTEGER(I4B) :: i,nmin REAL(SP) :: ax,bx,cx,fa,fb,fc,g,xmin REAL(SP), DIMENSION(20) :: amin nmin=0 write(*,'(/1x,a)') 'Minima of the function BESSJ0' write(*,'(/1x,t6,a,t19,a,t27,a,t40,a/)') 'Min. #','X',& 'BESSJ0(X)','BESSJ1(X)' do i=1,100 ax=i bx=i+1.0_sp call mnbrak(ax,bx,cx,fa,fb,fc,bessj0_s) g=golden(ax,bx,cx,bessj0_s,TOL,xmin) if (nmin == 0) then amin(1)=xmin nmin=1 write(*,'(1x,5x,i2,3x,3f12.6)') nmin,xmin,& bessj0(xmin),bessj1(xmin) else if (any(abs(xmin-amin(1:nmin)) <= EQL*xmin)) cycle nmin=nmin+1 amin(nmin)=xmin write(*,'(1x,5x,i2,3x,3f12.6)') nmin,& xmin,bessj0(xmin),bessj1(xmin) end if end do END PROGRAM xgolden