Fuel_usage =
   Trunc((ERnd(Total_ship_mass/10) * Distance * Engine_fuel_usage)
           / (10000 * Max_dist))
                     ...if UseAccurateFuelModel is off
   Total_ship_mass
    * (1.0 - Exp(-(Engine_fuel_usage * Distance) / (Max_dist * 100000)))
                     ...if UseAccurateFuelModel is on

Note that the UseAccurateFuelModel formula can yield fractional values. In case ship movement occurs in multiple phases (because the ship hits a mine), these fractional values are added up, and arithmetically rounded at the end. In contrast, non-accurate movement rounds after every step.

If the ship successfully finishes its journey (i.e. does not hit a mine), Distance is the same as Movement_distance. This is what client programs assume to predict your fuel usage.

The Engine_fuel_usage is part of the engine definition (engspec.dat), and differs for all engines and speeds. Most reference sheets tabulate Engine_fuel_usage / (Warp^2) because that yields nicer numbers.

This is a testing version.
It may be incomplete, and have more bugs (or features) than the public live version at planetscentral.com.