**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 **N**aval **O**bservatory **V**ector **A**strometry **S**ubroutines, 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