      Subroutine euler1m(dx,ti,xi,tf,xf)
c=======================================================================
c euler1d.f: Program to solve an initial value problem for 1st order ODE
c method:    modified Euler method (predictor-corrector)
c written by: Alex Godunov (October 2006)
c-----------------------------------------------------------------------
c input ...
c dx(t,x)- function dx/dt (supplied by a user)
c xi  - initial position
c ti 	- initial time
c tf  - time for a solution
c
c output ...
c xf  - solution at point tf
c=======================================================================
      Real*8 dx,xi,ti,xf,tf
      xf = xi + dx(ti,xi)*(tf-ti)
      xf = xi + (dx(ti,xi)+dx(tf,xf))*0.5*(tf-ti)
      Return
      End
