home *** CD-ROM | disk | FTP | other *** search
/ Collection of Education / collectionofeducationcarat1997.iso / SCIENCE / EPHEM421.ZIP / UTC_GST.C < prev    next >
C/C++ Source or Header  |  1990-09-13  |  1KB  |  62 lines

  1. #include "astro.h"
  2.  
  3. /* given a modified julian date, mjd, and a universally coordinated time, utc,
  4.  * return greenwich mean siderial time, *gst.
  5.  */
  6. utc_gst (mjd, utc, gst)
  7. double mjd;
  8. double utc;
  9. double *gst;
  10. {
  11.     double tnaught();
  12.     static double lastmjd = -10000;
  13.     static double t0;
  14.  
  15.     if (mjd != lastmjd) {
  16.         t0 = tnaught (mjd);
  17.         lastmjd = mjd;
  18.     }
  19.     *gst = (1.0/SIDRATE)*utc + t0;
  20.     range (gst, 24.0);
  21. }
  22.  
  23. /* given a modified julian date, mjd, and a greenwich mean siderial time, gst,
  24.  * return universally coordinated time, *utc.
  25.  */
  26. gst_utc (mjd, gst, utc)
  27. double mjd;
  28. double gst;
  29. double *utc;
  30. {
  31.     double tnaught();
  32.     static double lastmjd = -10000;
  33.     static double t0;
  34.  
  35.     if (mjd != lastmjd) {
  36.         t0 = tnaught (mjd);
  37.         range (&t0, 24.0);
  38.         lastmjd = mjd;
  39.     }
  40.     *utc = gst - t0;
  41.     range (utc, 24.0);
  42.     *utc *= SIDRATE;
  43. }
  44.  
  45. static double
  46. tnaught (mjd)
  47. double mjd;    /* julian days since 1900 jan 0.5 */
  48. {
  49.     double dmjd;
  50.     int m, y;
  51.     double d;
  52.     double t, t0;
  53.  
  54.     mjd_cal (mjd, &m, &d, &y);
  55.     cal_mjd (1, 0., y, &dmjd);
  56.     t = dmjd/36525;
  57.     t0 = 6.57098e-2 * (mjd - dmjd) - 
  58.          (24 - (6.6460656 + (5.1262e-2 + (t * 2.581e-5))*t) -
  59.            (2400 * (t - (((double)y - 1900)/100))));
  60.     return (t0);
  61. }
  62.