Program bisection
implicit none 
 real, parameter :: eps = 1.0e-6 
 real :: mid, fx, fy, fm, zero = 0, x = 1.0, y = 2.0 
 
 fx = x**2 - 2.0 ; fy = y**2 - 2.0 
 print *, fx * fy
 if(fx * fy < 0.0) then 
 do while (abs(x - y) > eps)
 print *, abs(x - y)
  if(abs(x - y) < eps) then 
       zero = y
       
  else 
       mid = 0.5 * (x + y); fm = mid**2 - 2.0
       if(fx * fm <= 0) then 
              y = mid; fy = fm 
       else 
              x = mid; fx = fm 
       end if 
  end if 
 end do 
 end if
 print *, ' Корень  ', zero
 end program  bisection