NOVAS-C
Naval Observatory Vector Astrometry Subroutines
C Language Version
William T. Harris
John A. Bangert
U. S. Naval Observatory
Based on the algorithms and Fortran version by:
George H. Kaplan
U. S. Naval Observatory
1. Introduction
The first version of NOVAS, the Naval Observatory Vector Astrometry Subroutines, was released in
1988. It was followed by a revised version, still the current version, in 1990. NOVAS is provided in the
form of Fortran source code. The Fortran package has proven to be very popular, but over the years, there
have been numerous requests for a C-language version. In the early 1990s, members of the U.S. Naval
Observatory/Naval Research Laboratory Optical Interferometer group converted parts of NOVAS to C for
use in their project. Their work was returned to the Naval Observatory's Astronomical Applications
Department for further development. The result is a package of C-language source code called NOVAS-C.
Like its Fortran counterpart, NOVAS-C is an integrated package of modules for the computation of a
wide variety of common astrometric quantities and transformations. The modules are all coded in ANSI-
standard C. The package can provide, in one function call, the instantaneous coordinates (apparent,
topocentric, or astrometric place) of any star or planet. At a lower level, NOVAS-C also provides general
astrometric utility transformations, such as those for precession, nutation, aberration, parallax, and the
gravitational deflection of light. The computations are precise to better than one milliarcsecond. The
NOVAS-C package is an easy-to-use facility which can be incorporated into data reduction programs,
telescope control systems, and simulations. The NOVAS-C algorithms are, in fact, virtually identical to
those now used in the production of the Astronomical Almanac.
The algorithms used by the NOVAS-C functions are based on a vector and matrix formulation which is
rigorous, consistent with recent IAU resolutions, and does not use spherical trigonometry or form "day
numbers" at any point. Objects within and outside the solar system are treated similarly and the position
vectors formed and operated on by these routines place each relevant object at its actual distance (in AU)
from the solar system barycenter. Objects at unknown distance (parallax zero or undetermined) are placed
on the "celestial sphere" herein defined to be at a radius of 10 megaparsecs (2.06
×
10
12
AU). A
description of the algorithms used, along with definitions of terms and related information, can be found in
Kaplan, et al. (1989) Astron. J. 97, 1197.
Since the algorithms used in the NOVAS-C functions are consistent with the IAU J2000.0 system, any
reference data which the functions require as input, such as a star's catalog mean place and proper motion,
must be expressed in this system. A large body of reference data now exists within the IAU J2000.0
system, including the FK5 star catalog, the JPL planetary ephemerides, the ACRS (a replacement for the
SAO star catalog), and an ever-expanding set of catalogs of radio sources and other objects.
Three levels of functions are involved: basic, utility, and supervisory. Basic-level functions supply the
values of fundamental variables, such as the nutation angles and the heliocentric positions of solar system
bodies, for specific epochs. Utility-level functions perform transformations corresponding to precession,
nutation, aberration, etc. Supervisory-level functions call the basic and utility functions in the proper order
to compute apparent, topocentric, or astrometric places of stars or solar system bodies for specific dates and
times. If desired, the user can interact exclusively with the supervisory-level routines and not become