Ephemeris trail
Introduction
Generalities
VSOP87
Build VSOP87
Truncating VSOP87
Testing VSOP87
Pluto99
ELP82
Class organization
Reference frames
CoordTransfo
Handling frames
Handling precision
Units
Handling time
Putting all together
Swiss Ephemeris
Testing VSOP87
It is possible to check the results of JEphem computation thanks to the test files given in the BDL's FTP site.
They give a file containing for each version of VSOP87 theory and for each planet, the results of the computation at 10 different dates.

I wrote a class, TestVSOP87.java (cf javadoc or , source code) which reads the results found in the test file and compares it to results of JEphem. This class has a method, testJEphemPrecision(), which produces an HTML page containing the results of the tests.

Executed tests

I first tested the full version of JEphem, matching the values obtained by JEphem with the data from BDL test file. As the tests were satisfying, I test the truncated version with BDL file. One of these days, I'd like to write a method to observe the differences between the full and the truncated versions in function of time.

The method testJEphemPrecision(), can produce 3 kinds of outputs : intermediary results (Detailed tests and Difference tables) an a Summary

You can see the complete results as generated by testJEphemPrecision() in separate pages : Tests for full precision version and Tests for truncated version .

Detailed tests

For each planet and each date of the test file, results from JEphem and from the BDL are shown ; the differences are calculated. This is done for positions and velocities.

Example :

JD = 2122820.0    19/12/1099 12h TDB
Variables
x (au)
y (au)
z (au)
x' (au/d)
y' (au/d)
z' (au/d)
M
e
r
BDL
0,2146329139
-0,3752296250
-0,0503982597
0,0188319750
0,0155086039
-0,0005235332
JEphem full
0,2146329128
-0,3752296257
-0,0503982588
0,0188319749
0,0155086038
-0,0005235332
|J. full - BDL|
0,0000000011
0,0000000007
0,0000000009
0,0000000001
0,0000000001
0,0000000000
V
e
n
BDL
-0,6660158465
-0,2753592311
0,0357874175
0,0075852982
-0,0187913517
-0,0006523229
JEphem full
-0,6660158479
-0,2753592302
0,0357874177
0,0075852982
-0,0187913518
-0,0006523229
|J. full - BDL|
0,0000000014
0,0000000009
0,0000000002
0,0000000000
0,0000000001
0,0000000000
E
a
r
BDL
-0,2763146784
0,9433985307
0,0019115387
-0,0168030101
-0,0048929320
-0,0000120286
JEphem full
-0,2763146770
0,9433985306
0,0019115374
-0,0168030101
-0,0048929321
-0,0000120286
|J. full - BDL|
0,0000000014
0,0000000001
0,0000000013
0,0000000000
0,0000000001
0,0000000000
M
a
r
BDL
-1,6278485157
0,3060194814
0,0494215740
-0,0019834234
-0,0126075128
-0,0002068580
JEphem full
-1,6278485174
0,3060194818
0,0494215746
-0,0019834235
-0,0126075127
-0,0002068580
|J. full - BDL|
0,0000000017
0,0000000004
0,0000000006
0,0000000001
0,0000000001
0,0000000000
J
u
p
BDL
0,4207861894
5,1019591310
-0,0280087663
-0,0076034843
0,0009707381
0,0001701694
JEphem full
0,4207861896
5,1019591299
-0,0280087663
-0,0076034843
0,0009707381
0,0001701694
|J. full - BDL|
0,0000000002
0,0000000011
0,0000000000
0,0000000000
0,0000000000
0,0000000000
S
a
t
BDL
-7,9395559173
-5,8435867016
0,4165601597
0,0029826848
-0,0044772655
-0,0000311309
JEphem full
-7,9395559148
-5,8435867007
0,4165601591
0,0029826848
-0,0044772655
-0,0000311309
|J. full - BDL|
0,0000000025
0,0000000009
0,0000000006
0,0000000000
0,0000000000
0,0000000000
U
r
a
BDL
11,8546461039
15,5595370553
-0,0950189343
-0,0031646232
0,0022092867
0,0000505971
JEphem full
11,8546461046
15,5595370556
-0,0950189341
-0,0031646232
0,0022092868
0,0000505971
|J. full - BDL|
0,0000000007
0,0000000003
0,0000000002
0,0000000000
0,0000000001
0,0000000000
N
e
p
BDL
-22,7985170870
19,5994768858
0,1206374034
-0,0020722808
-0,0023628830
0,0000962862
JEphem full
-22,7985170854
19,5994768865
0,1206374031
-0,0020722808
-0,0023628830
0,0000962862
|J. full - BDL|
0,0000000016
0,0000000007
0,0000000003
0,0000000000
0,0000000000
0,0000000000

Difference tables

From detailed tests, the differences between BDL and JEphem values are considered, for each planet, and the norm of vectors expressing the difference are calculated for position and velocity.

Example :

Mercury
Dates
Delta x (au)
Delta y (au)
Delta z (au)
Norm (au)
Delta x' (au/d)
Delta y' (au/d)
Delta z' (au/d)
Norm (au/d)
01/01/2000
0,0000000001 0,0000000001 0,0000000006 0,0000000006 0,0000000001 0,0000000001 0,0000000001 0,0000000001
31/12/1899
0,0000000008 0,0000000011 0,0000000004 0,0000000014 0,0000000000 0,0000000003 0,0000000003 0,0000000004
30/12/1799
0,0000000000 0,0000000018 0,0000000005 0,0000000019 0,0000000003 0,0000000003 0,0000000004 0,0000000006
29/12/1699
0,0000000008 0,0000000001 0,0000000005 0,0000000009 0,0000000000 0,0000000000 0,0000000003 0,0000000003
29/12/1599
0,0000000006 0,0000000001 0,0000000001 0,0000000006 0,0000000002 0,0000000000 0,0000000000 0,0000000002
19/12/1499
0,0000000006 0,0000000001 0,0000000012 0,0000000013 0,0000000003 0,0000000003 0,0000000001 0,0000000004
19/12/1399
0,0000000018 0,0000000023 0,0000000007 0,0000000030 0,0000000001 0,0000000005 0,0000000001 0,0000000005
19/12/1299
0,0000000023 0,0000000001 0,0000000012 0,0000000026 0,0000000004 0,0000000001 0,0000000005 0,0000000006
19/12/1199
0,0000000010 0,0000000002 0,0000000007 0,0000000012 0,0000000002 0,0000000000 0,0000000001 0,0000000002
19/12/1099
0,0000000011 0,0000000007 0,0000000009 0,0000000016 0,0000000001 0,0000000001 0,0000000000 0,0000000002
Delta max 0,0000000023 0,0000000023 0,0000000012 0,0000000030 0,0000000004 0,0000000005 0,0000000005 0,0000000006
Delta max of vector norms (built only with delta max) for Mercury :
Position : 0,0000000030 au = 0,449 km.
Seen from Earth, this represent an error of 0,001 arc sec.
Velocity : 0,0000000006 au/d = 0,001 m/s.

As you see, a little summary is written for each table. We know, for each planet, DeltaMax, the maximal difference between reference and tested implementation.

Summary

The third table is the most interesting. Here, only the maximal differences found for each planet are considered. This is translated in term of angular geocentric error for the position.

The geocentric angular error is calculated in the "worst case", when the distance Earth - planet is minimal.
For distance EP, formulae 2.1 and 2.2 of previous page were used.

Figure 1 illustrates the situation for an outer and an inner planet.



Results for the full version

Summary for "FILTER_FULL", the full precision implementation of VSOP87 :

Positions
Velocities
Norm of
delta max
Geocentric
angular error
Norm of
delta max
Mercury 0,0000000030 au
0,449 km
0,001
0,0000000006 au/s
0,001 m/s - 0,004 km/h
Venus 0,0000000020 au
0,306 km
0,002
0,0000000002 au/s
0,000 m/s - 0,001 km/h
Earth 0,0000000031 au
0,461 km
0,001
0,0000000003 au/s
0,001 m/s - 0,002 km/h
Mars 0,0000000034 au
0,501 km
0,001
0,0000000001 au/s
0,000 m/s - 0,001 km/h
Jupiter 0,0000000022 au
0,332 km
0,000
0,0000000001 au/s
0,000 m/s - 0,001 km/h
Saturn 0,0000000045 au
0,673 km
0,000
0,0000000001 au/s
0,000 m/s - 0,001 km/h
Uranus 0,0000000031 au
0,461 km
0,000
0,0000000001 au/s
0,000 m/s - 0,001 km/h
Neptune 0,0000000055 au
0,818 km
0,000
0,0000000001 au/s
0,000 m/s - 0,001 km/h

So we can consider that results of JEphem's full implementation of VSOP87 are correct..

Testing the truncated version

Summary for "FILTER_JEPHEM", "filtered" implementation of VSOP87, using a method developped for JEphem :

Positions Velocities
Norm of
delta max
Geocentric
angular error
Norm of
delta max
Mercury 0,0000059206 au
885,705 km
2,002 " 0,0000008551 au/s
1,512 m/s - 5,444 km/h
Venus 0,0000004678 au
69,980 km
0,345 " 0,0000000241 au/s
0,043 m/s - 0,154 km/h
Earth 0,0000031916 au
477,457 km
0,658 " 0,0000002851 au/s
0,504 m/s - 1,815 km/h
Mars 0,0000045381 au
678,897 km
1,800 " 0,0000000777 au/s
0,137 m/s - 0,495 km/h
Jupiter 0,0000427466 au
6 394,799 km
2,099 " 0,0000002861 au/s
0,506 m/s - 1,821 km/h
Saturn 0,0001597247 au
23 894,479 km
3,853 " 0,0000002563 au/s
0,453 m/s - 1,632 km/h
Uranus 0,0003595850 au
53 793,148 km
4,071 " 0,0000001920 au/s
0,340 m/s - 1,222 km/h
Neptune 0,0003224473 au
48 237,428 km
2,285 " 0,0000001973 au/s
0,349 m/s - 1,256 km/h


For the truncated version, the errors found are beyond one arcsecond, the maximal expected results (see Filtering VSOP87 data).
There is a mistake somewhere.