Ephemeris trail
Build VSOP87
Truncating VSOP87
Testing VSOP87
Class organization
Reference frames
Handling frames
Handling precision
Handling time
Putting all together
Swiss Ephemeris
Handling precision
One of the motivation which led me to the development of JEphem is the will to know the precision of computations. This page describes the informations I found, and how they were included in JEphem.
Precision control in JEphem is based on ComputationExceptions held by bodies.


When a computation is done, and a result is given, several factors must be taken into account to know the precision of the result :
  • the precision of the planetary theories used ;
  • the internal precision of the frames in which the coordinates are expressed ;
  • the loss of precision due to the transformations done on the coordinates.
  • Precision of planetary theories

    Very roughly, the theories used (VSOP87, ELP82 and Pluto99) are analytical solutions, based on the resolution of differential equations coming from Newton laws.
    The real process seems much more complex, but anyway, integrating a differential equation leads to a set of possible results that can be noted f(t) + K, K being a constant. To find which value of K must be retained, they use JPL ephemeris instead of real observations.
    So the precision of these theories indicate the differences with the JPL ephemeris used as reference.

    So the first thing to do is to find out the precision of JPL ephemeris.
  • DE200, used as a reference for VSOP87 and ELP82.

  • I couldn't find directly the precision of DE200. I found an article, An approximation to the outer planet ephemeris errors in JPL's DE200 (Astronomy and Astrophysics 233, pp 272-274, 1990), which compares DE200 to DE202 (which is more accurate than DE200 for the outer planets).
    The most important differences concern right ascensions. They reach few tenth of arc seconds over a quite short periods (less than a century);
    It would be more interesting to know the differences between DE200 and modern observations (like VLBI), but this leads to a question : why should we care about the precision given by VSOP87 (which is about few thousandth or hundredth of arc seconds between 1900 and 2100, cf VSOP page) if DE200 is much less precise?
  • DE406, used as a reference for Pluto99.

  • DE406 is a compact and less precise version of DE405. From the presentation of DE405 by E.M Standish and an article Check on JPL DE405 using modern optical observations (Astronomy and Astrophysics SS 132, pp 381-386, 1998), I found out that DE406 precision is really below Pluto99 precision (0.36").

    Precision of the frames

    I think (but am I right?) that I don't need to worry about what is called in JEphem the "frames of the theories", because these frames are built from the JPL ephemeris.

    But the question arises for the FK5. In [Ber98], I found these informations about the FK5 :
  • the precision of its reference plane is 20 mas (mas = milli arc second);
  • the precision of its equinoxe is 3 mas ;
  • Errors on the positions of stars used to build reach 100 mas.

  • Should I conclude that any position expressed in the FK5 can't be given with a precision better than 100 mas ( = 0.1 arc second) ?

    Inaccuracies due to coordinate transformations

    To know the precision of a result, one should also take into account the limitations of precession and nutation theories.
    TO DO

    Precision control in JEphem

    When I implemented precision control in JEphem, I was not aware of the limitations exposed above.
    So I only based precision control on the precision given by the planetary theories. This mechanism will have to be changed to take into account the limitations.

    When a computation is asked, the planetary theory classes check if the precision asked for a given julian day and body can be honoured. If not, this is memorized by a field of Body, containing a jephem.astro.solarsystem.ComputationException. It is then possible afterwards to check if the different bodies contain such exceptions, and alert the user.