program fzero_main ! Main program for fzero ! Adapted from Kahaner, Moler & Nash, "Numerical Methods and Software". ! Declare variables: implicit none integer :: iflag real ::a, b, ae, re, f external f ! Required since f is an argument of fzero. write(*,*) 'Enter interval endpoints:' read*, a, b write (*,*) 'Enter absolute and relative error tolerances ae,re:' read*, ae, re write (*,*) 'Initial interval: ', a, b write(*,*) 'Tolerances: ', ae, re call fzero (f, a, b, b, re, ae, iflag) write(*,*) write(*,*) 'Fzero results:' if (iflag/=1) write (*,*) 'Error code = ', iflag write(*,*) 'Estimate of zero = ', a write(*,*) 'Function value = ', f(a) stop end program !================================================================== function f(x) ! Declare variables: implicit none real :: f, x f = x * (x*x-2.0) - 5.0 return end function f