deltaT function

double deltaT(
  1. double jdUt
)

ΔT = TT − UT in seconds at jdUt (Julian day in UT).

Sources by epoch:

  • February 1973 to the latest measurement: measured USNO values (linear interpolation between months),
  • years −720 … 1973: the spline of Morrison, Stephenson et al. (2016, 2021),
  • outside that range: the parabola from the same work with a linear correction chosen so that the value and rate of ΔT match the data at the junction (as in the formulas of Espenak and Meeus).

At the junction of the spline and measurements (1973) there is a step of about 0.23 s; for the Moon that is about 0.1″.

Implementation

double deltaT(double jdUt) {
  final jds = _monthlyJulianDays;
  if (jdUt >= jds.first) {
    if (jdUt > jds.last) {
      return _future.at(_year(jdUt));
    }
    return _interpolateMonthly(jdUt);
  }
  final year = _year(jdUt);
  if (year >= deltaTSpline.first.$1) return _spline(year);
  return _past.at(year);
}