U.S. Naval Observatory Ephemerides of the Largest Asteroids



The U.S. Naval Observatory has produced high precision ephemerides for the asteroids:

The description of the ephemerides can be found in Hilton (1997) and Hilton (1999).

This CD-ROM provides the ephemerides for these asteroids in tabular ASCII format. In addition there is source code in C to convert the ephemerides to Chebyshev polynomials and interpolate them. Converting the ephemerides from ASCII to Chebyshev polynomials is recommended because the Chebyshev polynomials are much more compact than the tabular data and positions and velocities can quickly be interpolated from them for any arbitrary date.

"Ephemerides Files," describes the ephemeris files. "Generating the Chebyshev Polynomials," describes how to produce Chebyshev polynomial files for quick interpolation. "Reading the Ephemerides," gives a description of how to use the C functions to access the ephemerides. "Testing the Ephemerides," describes how to test the Chebyshev polynomials of the ephemerides. "References," gives references for finding more detailed information on the ephemerides. Appendix A: NOVAS gives information on using the ephemerides with NOVAS-C, the Naval Observatory Vector Astrometry Subroutines in C. Appendix B: Technical Issues discusses those technical issues that place restrictions on the implementation of these ephemerides.

These ephemerides are provided on an "as is" basis. The U.S. Naval Observatory can not provide individual assistance in the implementation or use of these ephemerides.

Ephemerides Files

The asteroid ephemerides are stored in tabular format in individual ASCII character files. The files are named asteroidname.eph (see Appendix B: Technical Issues on shortened name for Interamnia). The tabulation gives the Julian date - 2400000, the Cartesian coordinates for the asteroid in AU, and the velocity vector of the asteroid in AU day-1. The coordinate system is the Cartesian heliocentric equatorial system of the mean equator and equinox of J2000.0. The tabulation interval is 2.0 Julian Days. The ephemeris files are located in the ephem directory on the CD-ROM.

Generating the Chebyshev Polynomials

You can generate your own binary Chebyshev polynomial ephemeris to be read by the ephemeris reading function. The source code file, makeph.c, and all of the subsidiary files, generate.c, allocate.c, and chby.c, needed to generate the Chebyshev polynomials are located in the software directory on the CD-ROM. There is also a makefile, usnoae98.mak, to compile and link the program on Unix systems. The makefile generates an executable called makeph.

When you run the makeph it first prompts you for the asteroid number and name. Assuming that the name you give the program is AsteroidName, The program then looks for the ASCII ephemeris file AsteroidName.eph which it will convert to a binary Chebyshev polynomial file called AsteroidName.chby. You are free to rename the asteroid files as long as you keep the .eph and .chby file extensions.

Next, the program prompts you for a tolerance in the fit of the Chebyshev polynomial. A tolerance of 10-12 is small enough that the precision of the resulting Chebyshev polynomials will be two orders of magnitude greater than the uncertainties in the positions and velocities of the most accurate of the asteroids.

Finally, the program prompts you for a header string delimited by "". The header string can contain any information you want to add to the ephemeris file. The string is inserted into the ephemeris file at the beginning along with the asteroid number, name and the tolerance of the Chebyshev polynomials.

Converting from an ASCII ephemeris file to Chebyshev polynomials is computation intensive, so it may take several minutes.

If you desire, you may produce a Chebyshev polynomial file from your own asteroid ephemeris file. All you have to do is provide an ASCII ephemeris file. The file is named AsteroidName.eph. Each line contains first the Julian date - 240000, the Cartesian coordinates for the asteroid, and the velocity of the asteroid. As long as each item is delimited by at least one space, the program does not require any further formatting in the ephemeris file. Any Cartesian coordinate system or system of units are fine as long as they are consistent with any other ephemerides being used.

The Chebyshev polynomial representation has the advantage that the position and velocity for any date within the valid time period of the ephemeris can be interpolated easily. The disadvantage is that the values produced by the Chebyshev polynomials are not exactly the same as that of the tabulated ephemeris; however, the difference between the tabulated and the Chebyshev representations can be made arbitrarily small. The coefficients of the Chebyshev polynomials were calculated using the algorithm detailed in Newhall (1989) which is also used for distribution of the JPL DE-series planetary ephemerides. However, since asteroid orbits are generally more elliptical than planetary orbits, neither the granule length nor the degree of the polynomial are fixed, but are calculated for each orbital segment. As a result, the Chebyshev polynomial representations are extremely compact, fitting a 300 year asteroid ephemeris into just over 680KB.

Reading the Ephemerides

The binary ephemerides can be read using the functions found in the file readeph.c. In addition to readeph you need to link in the code from chby.c and allocate.c. All three of these files are found in the software directory.

The software to read the ephemerides consists of a function to read the ephemerides, functions to initialize and clean up the files after use of the ephemerides, and utility functions, used by the ephemeris reading functions.

Before reading any ephemerides files first call the function:

This function initializes the variable astinf.num to 0. This variable is used to keep track of the number of asteroid ephemerides files that have been accessed, so it is possible to access multiple asteroid files without initializing them each time they are called.

To read the ephemerides you can call the function:

where mp is the asteroid's number, name is the asteroid's name, jd is the Julian date, and err is a flag returned describing any errors encountered in interpolating the ephemeris. Possible returns are: 0 ( no error ), 1 ( memory allocation error ), 2 ( mismatch between asteroid name and number ), 3 ( Julian date out of bounds ), and 4 ( can not find Chebyshev polynomial file ).

The return from the ephemeris function is a pointer to six double precision numbers. The first three are the equatorial Cartesian coordinates of the asteroid in AU on the mean equator and equinox of J2000.0 and the next three numbers comprise the associated velocity vector in AU day-1.

To make sure that the right asteroid ephemeris is being accessed, the functions compare the name and number of the asteroid ephemeris.

The function readeph assumes that the asteroid ephemeris file has the name AsteroidName.chby and it is located in the present working directory.

When you are finished using the asteroid ephemerides, call the function

This function makes sure that all of the ephemerides files are properly closed.

Testing The Ephemerides

There is a program readtest.c to compare the Chebyshev ephemeris files with test result files. The usnoae98.mak makefile will construct readtest, on Unix platforms. On other computers you need to compile the code using a C compiler, and link it with the code compiled from the readeph.c, allocate.c, and chby.c all found in the software directory. The test data for each asteroid is available in the tstfiles directory. The names of the test files are in the format asteroidname.tst (see Appendix B: Technical Issues on shortened name for Interamnia). The test files were written using Chebyshev binary files computed with a tolerance of 10-12. Thus if you use the same tolerance you should get agreement to that level of precision.

The readtest executable will prompt the user for both the asteroid name and number. The program assumes that both the ephemeris and comparison files are in the present working directory.


Dunham, D.W., et al. 1990, The Size and Shape of (2) Pallas from the 1983 Occultation of 1 Vulpeculae, Astron. J., 99, 1636

Hilton, J. L. 1997, New Asteroid Ephemerides for the Astronomical Almanac

Hilton, J.L. 1999, US Naval Observatory Ephemerides for the Largest Asteroids, Astron. J., 117, 1077-1086.

Kaplan, G.H. 1990, Bull. Amer. Astron. Soc., 22, 930 - 931

Newhall, X X 1989, Numerical Representation of Planetary Ephemerides, Celestial Mechanics , 45, 305 - 310


The asteroid ephemerides can be used with NOVAS, Naval Observatory Vector Astrometry Subroutines by Kaplan (1990). The NOVAS functions, available in C and FORTRAN, are used for the computation of a wide variety of astrometric quantities and transformations. NOVAS can determine the instantaneous coordinates (apparent, topocentric, or astrometric) of any star or solar system body, if the needed ephemerides are available.

In particular, NOVAS-C, the C version of NOVAS, is designed to include readeph directly. The novas.h file contains a struct called body that looks like this:

	typedef struct {
		short unsigned int type;
		short unsigned int number;
		char  name[100];
	} body;
The variable type is set to 0 for the major planets, the Sun, and the Moon, and to 1 for the asteroids. If type = 0, then number = 1 for Mercury, ..., = 9 for Pluto, = 10 for the Sun, = 11 for the Moon. If type = 1, then number is the asteroid's number. The variable name is the body's name. Both a number and name are required because there is some duplication of names of minor bodies in the solar system. For example both Jupiter V and asteroid 113 are named Amalthea.

Many of NOVAS's functions require the use of ephemerides of the planets as well as the ephemerides of the asteroids. NOVAS is written to make use of the JPL planetary ephemerides such as DE200 and DE405.

If you want barycentric coordinates of the asteroid the function:

used in conjunction with NOVAS-C will convert from the heliocenter to the barycenter. The variable jd is the Julian date for the conversion and posvel is a vector containing the Cartesian position and velocity, in that order, to be converted. The return is a pointer to the Cartesian position and velocity vector in barycentric coordinates. The function tossbarry assumes that all ephemerides used have the same units and orientation for the coordinate systems.

Appendix B: Technical Issues

ISO9660 Compliance

The files on this CR-ROM were written in compliance to the ISO9660 standards. These standards require that the file names consist of a name with a maximum of eight characters, a '.', and an extension of at most three characters. The file name standard is also not case sensitive. As a result:
  1. All file names are written in lower case. On Macintosh systems, however, the names appear to be in upper case.
  2. The ephemeris and test files for asteroid 704 Interamnia have been shortened to interamn.* to comply with the 8.3 file name convention.

Carriage Return-Line Feed Conventions

The three main computer operating systems, Windows, Macintosh, and Unix use different conventions for designating the end of a line. In Windows, the end of a line is designated by a carriage return and a line feed. On a Macintosh, only a carriage return is required. And Unix only requires a line feed. The ASCII files on this CD-ROM are written using the Unix format for two reasons. First, it is expected that the majority of the users of this CD-ROM will be using the Unix operating system. Second, the only case found in testing the ephemerides where the different conventions made a difference was on a Unix platform. In this case the make facility was unable to function properly with lines terminated with a carriage return-line feed.


The author would like to acknowledge the following people for their help in producing this CD-ROM. Mr. William Harris and Ms. wkh for testing the software on other platforms and making suggestions on improving the readability of the code. Dr. Marc Murison for helping me cut the master CD-ROM. Dr. Alan Fiala for shepherding the CD-ROM through the manufacturing process. Dr. George Kaplan and Mr. John Bangert for overseeing the entire project, reading and commenting on the code, and making sure that the project of producing this CD-ROM was brought to a successful conclusion.
Last Modified: February 1, 1999