def nutation(jde):
    '''
    Calculate nutation angles using the IAU 2000B model.

    The table is from NOVAS(USNO) c source flle.

    "...the 77-term, IAU-approved truncated nutation series, IAU 2000B, which
    is accurate to about 0.001 arcsecond in the interval 1995-2050"

    Arg:
        jde as JDE
    Return:
        nutation of longitude in radians

    '''

    t = (jde - J2000) / 36525.0

    #Mean anomaly of the Moon, in arcsec
    L = 485868.249036 + t * 1717915923.2178

    #Mean anomaly of the Sun.
    Lp = 1287104.79305 + t * 129596581.0481

    #Mean argument of the latitude of the Moon.
    F = 335779.526232 + t * 1739527262.8478

    #Mean elongation of the Moon from the Sun.
    D = 1072260.70369 + t * 1602961601.2090

    #Mean longitude of the ascending node of the Moon.
    Om = 450160.398036 - t * 6962890.5431

    m1, m2, m3, m4, m5, AA, BB, CC, EE, DD, FF = np.hsplit(IAU2000BNutationTbl,
                                                        11)
    args = (m1 * L + m2 * Lp + m3 * F + m4 * D + m5 * Om) * ASEC2RAD
    lon = sum((AA + BB * t) * np.sin(args) + CC * np.cos(args))

    # unit of longitude is 1.0e-7 arcsec, convert it to arcsec
    lon *= 1.0e-7

    # Constant account for the missing long-period planetary terms in the
    # truncated nutation model, in arcsec
    deplan = 0.000388
    lon += deplan

    lon *= ASEC2RAD  # Convert from arcsec to radians
    lon = math.fmod(lon, TWOPI)

    return lon

    Calculate nutation angles using the IAU 2000B model.

    The table is from NOVAS(USNO) c source flle.

    "...the 77-term, IAU-approved truncated nutation series, IAU 2000B, which
    is accurate to about 0.001 arcsecond in the interval 1995-2050"

    Arg:
        jde as JDE
    Return:
        nutation of longitude in radians

    
aa.py