< previous page page_53 next page >

Page 53
time records. In this case, the total storage requirement can be drastically reduced by using the compression algorithms supplied as part of the SCDTL system.
The use of type int in the DATE_INFO structure is the only real logical choice for these variables. One major reason for this statement is related to changes in the period of the rotation of the Earth. There are two considerations:
The rotation of the Earth is slowing down, primarily due to tidal friction in the EarthMoon system. This process was first discovered by comparing dates for ancient eclipses in known locations which depend upon the time of the eclipse. Modern eclipses, predicted on the basis of the ancient ones, consistently occur too early.
The amount of time involved is approximately three hours in 2,000 years. Over a period of 32,767 years, therefore, the current rate of slowing would produce a predicted difference of over 49 hours, or an error of more than two days.
The rotation of the Earth varies irregularly in ways that are not clearly understood at this time. As a consequence, the mean solar day varies slightly in length and cannot provide an accurate measure of time for the prediction of future positions of celestial objects.
As a consequence of this variation, tables giving positions of celestial objects are based on ''ephemeris time," which progresses at a uniform rate. Ephemeris time and universal time were set to be in agreement at the beginning of the twentieth century but had already deviated by more than 30 seconds by 1970.
There are several important consequences for these findings. First, any calendar that depends upon actual astronomical events for its construction is useless for predictive purposes for periods of more than about a century. Hence, a calendar that depends upon the actual astronomical new moon, such as the Chinese calendar, cannot be accurately constructed for more than about one century into the future.
Second, it is really pointless to construct a calendar with an accuracy significantly better than one day in 32,767 years, since the physical astronomy of the situation will not support the calendric mathematics. The values of INT_MAX and INT_MIN are thus very convenient indeed for the year variable. Once this argument is accepted for the year variable, it follows that the month and day variables should also be of type int, since so many of the conversion routines mix these variables.
The type double is used to support the Julian Day number in the SCDTL system for several reasons. First, the JD# is a floating point number and type float simply does not provide an adequate range. Second, most of the mathematical functions available in C support type double. Third, timekeeping is fundamentally a matter of applied astronomy, and single-precision is simply inadequate for the purposes of mathematical astronomy. I have endeavored to keep the amount of mathematical astronomy in the current work to a minimum, but wise design will recognize that this area is fundamental to the subject matter. One of the most likely areas in which further extensions to the SCDTL system may occur is paleoastronomy.

 
< previous page page_53 next page >