utils/SSEphem/astrtime.cc
double utc2gast (long mjd, double utc)
{
    double gmst = utc2gmst(mjd, utc);
// ------- using the equation of the equinoxes -------
    // first get the Ephemeris Time (actually Terrestrial Dynamic Time)
    long tt_mjd;
    double tt;
    utc2tt (mjd, utc, tt_mjd, tt);
    // then compute and add the equation of the equinoxes
    return gmst + iauEqeq94(2400000.5, (double)tt_mjd + tt) / TWOPI;
// ---------------------------------------------------
/* a longer alternative using full nutation and taking the R.A. component
    double vector[3];
    iauS2c (gmst * TWOPI, 0.0, vector);

    long tt_mjd;
    double tt;
    utc2tt(mjd, utc, tt_mjd, tt);

    double nut_mat[3][3];
    iauNum00a(2400000.5, (double)tt_mjd + tt, nut_mat);

    double new_vector[3];
    iauRxp(nut_mat, vector, new_vector);

    double ra, dec;
    iauC2s(new_vector, &ra, &dec);
    ra /= TWOPI;
    if (ra < 0.0) ra += 1.0;
    if (ra >= 1.0) ra -= 1.0;
    return ra;
*/
}
// Greenwich Apparent Sidereal Time is GMST corrected for the shift in the
// position of the vernal equinox due to nutation.  Nutation is the
// mathematically predictable change in the direction of the earth rotation
// axis due to changing external torques from the sun, moon and planets.
// The smoothly varying part of the change in the earth's rotation
// (precession) is already accounted for in GMST.  The currently standard
// nutation theory is composed of 106 non-harmonically-related sine and
// cosine components plus 85 planetary correction terms.  The 4 dominant
// periods are 6798.4, 182.6, 13.7, and 3399.2 days with ampltudes of
// -17.1996, -1.3187, -0.2274, and 0.2062 arcseconds in ecliptic longitude,
// respectively.  The right ascension component of nutation is called the
// "equation of the equinoxes," which is coded in the SOFA routine
// iauEqeq94().
//	GAST = GMST + (equation of the equinoxes)
Greenwich Apparent Sidereal Time is GMST corrected for the shift in the
position of the vernal equinox due to nutation.  Nutation is the
mathematically predictable change in the direction of the earth rotation
axis due to changing external torques from the sun, moon and planets.
The smoothly varying part of the change in the earth's rotation
(precession) is already accounted for in GMST.  The currently standard
nutation theory is composed of 106 non-harmonically-related sine and
cosine components plus 85 planetary correction terms.
Greenwich Apparent Sidereal Time is GMST corrected for the shift in the position of the vernal equinox due to nutation . Nutation is the mathematically predictable change in the direction of the earth rotation axis due to changing external torques from the sun moon and planets . The smoothly varying part of the change in the earth ' s rotation ( precession ) is already accounted for in GMST . The currently standard nutation theory is composed of 106 non - harmonically - related sine and cosine components plus 85 planetary correction terms .
double utc2gast (long mjd, double utc)
{
    double gmst = utc2gmst(mjd, utc);
    long tt_mjd;
    double tt;
    utc2tt (mjd, utc, tt_mjd, tt);
    return gmst + iauEqeq94(2400000.5, (double)tt_mjd + tt) / TWOPI;
}
double utc2gast ( long mjd , double utc ) { double gmst = utc2gmst ( mjd , utc ) ; long tt_mjd ; double tt ; utc2tt ( mjd , utc , tt_mjd , tt ) ; return gmst + iauEqeq94 ( 2400000.5 , ( double ) tt_mjd + tt ) / TWOPI ; }
Greenwich Apparent Sidereal Time is GMST corrected for the shift in the
position of the vernal equinox due to nutation.
Greenwich Apparent Sidereal Time is GMST corrected for the shift in the position of the vernal equinox due to nutation .
// ------- using the equation of the equinoxes ------- // first get the Ephemeris Time (actually Terrestrial Dynamic Time) // then compute and add the equation of the equinoxes // --------------------------------------------------- /* a longer alternative using full nutation and taking the R.A. component
    double vector[3];
    iauS2c (gmst * TWOPI, 0.0, vector);

    long tt_mjd;
    double tt;
    utc2tt(mjd, utc, tt_mjd, tt);

    double nut_mat[3][3];
    iauNum00a(2400000.5, (double)tt_mjd + tt, nut_mat);

    double new_vector[3];
    iauRxp(nut_mat, vector, new_vector);

    double ra, dec;
    iauC2s(new_vector, &ra, &dec);
    ra /= TWOPI;
    if (ra < 0.0) ra += 1.0;
    if (ra >= 1.0) ra -= 1.0;
    return ra;
*/