eSmart function

double eSmart(
  1. double jde
)

Simplified equation of time (lower accuracy, no VSOP87 needed).

Formula 28.3, p. 185. Returns the equation of time in radians.

Implementation

double eSmart(double jde) {
  final t = j2000Century(jde);
  final tau = t * 0.1;
  final eps = nut.meanObliquity(jde);
  final y = math.tan(eps / 2);
  final y2 = y * y;
  // Mean longitude and anomaly from low-accuracy solar.
  final meanLon = toRad(l0(tau));
  final e = horner(t, [0.016708634, -0.000042037, -0.0000001267]);
  final m = toRad(horner(t, [357.52911, 35999.05029, -0.0001537]));
  // (28.3)
  final eot = y2 * math.sin(2 * meanLon) -
      2 * e * math.sin(m) +
      4 * e * y2 * math.sin(m) * math.cos(2 * meanLon) -
      0.5 * y2 * y2 * math.sin(4 * meanLon) -
      1.25 * e * e * math.sin(2 * m);
  return eot;
}