code: function moonAngle(date) {
    const jd = jd0(date.getFullYear(), date.getMonth() + 1, date.getDate());
    const T = (jd-2451545.0)/36525;
    const T2 = T*T;
    const T3 = T2*T;
    const T4 = T3*T;
    // Moons mean elongation
    const D = 297.8501921+445267.1114034*T-0.0018819*T2+T3/545868.0-T4/113065000.0;
    // Suns mean anomaly
    const M = 357.5291092+35999.0502909*T-0.0001536*T2+T3/24490000.0;
    // Moons mean anomaly M'
    const MP = 134.9633964+477198.8675055*T+0.0087414*T2+T3/69699.0-T4/14712000.0;
    // phase angle
    const pa = 180.0-D-6.289*sind(MP)+2.1*sind(M)-1.274*sind(2*D-MP)
            -0.658*sind(2*D)-0.214*sind(2*MP)-0.11*sind(D);
    return rev(pa);
  }
docs: Return the phase angle of the moon. This is lifted from the JavaScript Ephemeris page by Peter Hayes at http://www2.arnes.si/~gljsentvid10/jspodatkinanebu.html. That work in turn is based on Meeus chapter 45 and the illuminated percentage from Meeus equations 46.4 and 46.1.