* Last updated 2017 April 18 *

The following are a few of the books on my shelf that I've found useful, at one time or another, in figuring out the mathematical and practical aspects of writing astronomy-oriented software. Standard disclaimers: your mileage may vary. At some point, I may come back and add suitable links to publisher's sites and so on, plus some more books from the shelf. Then again, I may not.

Please note that these comments reflect the prejudices of a guy who does a lot of programming; has a solid math background, but no formal astronomical background; and tends to have interests in certain areas of astronomical computing, but may not get too excited about other areas. Again, your mileage may vary.

* Astronomical Algorithms*, by Jean Meeus.

* Elements of Solar Eclipses 1951-2200, * by Jean Meeus.

* Fundamental Ephemeris Computations, * by Paul J. Heafner.

* Fundamentals of Astrodynamics*, by
Roger R. Bate, Donald D. Mueller, Jerry E. White.

* Explanatory Supplement to the Astronomical Almanac, * edited by
P. Kenneth Seidelmann.

* Methods of Orbit Determination for the Micro Computer, * by Dan
Boulet.

* Fundamentals of Celestial Mechanics, * by J. M. A. Danby.

* Lunar Tables and Programs from 4000 BC to AD 8000*, by
Michelle Chapront-Touzé and Jean Chapront.

* The Theory of Orbit Determination*, by Andrea Milani and
Giovanni-Federico Gronchi.

** • Astronomical Algorithms, by
Jean Meeus. ** Willmann-Bell.
This book has been the basis of more astronomical software, including
much of my own, than any other. It's a very "practically" oriented
book, with clear algorithms for such tasks as figuring out planetary
and lunar positions and phenomena, rise/set/transit times, and
positions of the Galilean satellites (but no other satellites).
In all cases, the math is given, rather than source code. (Which,
in my humble opinion, is how it ought to be. Anybody can understand
the math passably well, but not everyone understands C or FORTRAN.)

There is absolutely no "underlying theory" given here. The
algorithms do, of course, have a physical basis behind them, but
you wouldn't know that by looking at this book. However, I find
that most people are more interested in getting an answer to, say,
"Where's the moon?" than they are in the physics. If you * do *
want to understand the physics, look elsewhere.

There is a companion diskette for this book, with source code in C, Pascal, BASIC, and (if I recall correctly) certain other languages. However, the discussions of the algorithms really are quite clear. The main benefit of the diskette is that it can spare you entering long tables of data. (Though in some cases, you can probably edit chunks of source code from this page to get those same tables.)

There's now a second edition of this book for sale. The new version includes chapters on the Hebrew and Islamic calendars, positions of the satellites of Saturn, and an appendix with coefficients for the heliocentric positions of Jupiter through Neptune for 1998 to 2025.

** • Elements of Solar Eclipses
1951-2200, by Jean Meeus. **
Willmann-Bell.
Despite the title, this book ought to be of some interest to anyone
working on occultations and transits, because the heart of it is a
discussion of the use of Besselian elements, and those can be generalized
from "the moon passes in front of the Sun" to "object A passes in front
of object B". Besselian elements were essentially new to me until I read
this book, but it contained everything I needed to know to implement
eclipse/occultation computations in my software. (With one exception:
while it's excellent at telling you how to

The book gives algorithmic descriptions of how to find the center line of an eclipse, the maximum north/south extents, the area of total (or annular) eclipse, and so on... basically, how to compute everything you would want to know about a given eclipse (and, by generalization, an occultation or transit.) As the title suggests, elements are given for solar eclipses from 1951 to 2200. If you have a burning need for elements outside that date, let me know; I computed them long ago, stored them on my hard drive, then forgot about them. (At one time, I was going to have Guide use them. Now, Guide computes them on-the-fly instead.)

** • Fundamental Ephemeris Computations,
by Paul J. Heafner. **
Willmann-Bell. Also discussed a bit
at Willmann-Bell's site
here. This is an excellent introduction to the methods for computing
high-precision planetary and lunar positions. Almost all books on this
subject rely on analytic theories developed at the
Bureau des Longitudes in Paris, such as VSOP, ELP, and PS-1996.
Almost all astronomical software, including Guide, Charon, and Find_Orb,
do so as well.

VSOP and ELP are based on an earlier version of the fundamental JPL ephemeris DE200. PS-1996 is based on a later version, DE403. I and others have made use of these analytic theories because they're convenient, small (a few hundred KBytes or so), and reasonably accurate (usually to a fraction of an arcsecond). But for the utmost in precision, one really ought to use the JPL DE ephemerides (the current state-of-the-art is DE405 and DE406). This book describes how to do so, and provides PowerBASIC and C source code for the task, along with the math needed to handle precession, nutation, different time systems, coordinate conversion, and so on (i.e., the auxiliary tools needed to turn the raw data from the DE ephemerides into something useful.)

The book is somewhat single-minded in pursuing planetary and lunar ephemerides. Side issues, such as computing solstice/equinox dates, lunar phases, satellites of other planets, etc. are not treated. (But this is not a big deal, in my opinion. For example, once you've got a function to determine the sun's position, it's not all that tough to write a root-finding function that looks for instants when (solar ecliptic longitude = 0, 90, 180, or 270), thereby giving you equinox and solstice dates.) This is also not a "theory" book; you don't get any idea as to whence all these formulae came. Pages 1-186 are mixed text, equations, and source code, but pages 187-312 are nothing but a listing of the C source code. A floppy is included.

The main reason DE ephemerides don't get more use is because they are huge. You can download them via ftp from the JPL Web site, but you really need a broadband connection to do that effectively. Alternatively, you can get them from Willmann-Bell on a CD-ROM for about $25.

The secondary reason they don't get more use, though, is that
few people really need the sort of precision we're talking about here.
I am of the opinion that you can never be * too * accurate, and
I have some applications (such as my Find_Orb
orbit determination software) that would benefit from the greater
speed of DE.

Incidentally, I've posted some C source code
to access the JPL DE ephemerides. This code has assorted advantages
over that in the book, such as allowing one to handle ephemerides without
worrying about byte order or needing to recompile to use different
ephemerides. However, the source code does nothing but extract rectangular
coordinates; the PowerBASIC and C code from * Fundamental Ephemeris
Computations * includes the other functions discussed above.

** • Fundamentals of Astrodynamics,
by Roger R. Bate, Donald D. Mueller, Jerry E. White. **
This was written in 1971 as a textbook for the US Air Force Academy,
and has the sort of style and focus you would expect for training USAF
cadets in the basics of astrodynamics. I'd heard of it over the
years, but only got round to purchasing a copy a month or two ago.
It's interesting to see topics addressed from the
standpoint of "we're US Air Force people putting objects into orbit
around the earth and/or to the moon" (it was written in the middle of
the Apollo missions, so that gets a fair bit of attention). Most
of the books described on this page were written from the viewpoint
of "we're astronomers observing objects going around the sun, or
maybe another planet". However,

As a teaching textbook, more attention seems to have been paid to making the explanations easy to follow; the mathematical level expected is somewhat less than that in the other books on this page. I expect to find myself quoting this book when I'm asked various questions about celestial mechanics.

There are a few places where the methods used in 1971 don't quite line up with how you'd do things in 2017, given the increase in computing power over that time, but not all that many. Overall, it holds up well to the passage of time. Also, it's now in a Dover reprint edition, which makes it inexpensive.

** • Explanatory Supplement to the
Astronomical Almanac,
edited by P. Kenneth Seidelmann. ** This book is enormously useful
for certain obscure aspects of astronomical programming. Its discussions
of assorted time systems and the vagaries in the earth's rotation are the
most thorough I've seen anywhere. Almost every book I've ever seen
glosses over the differences between UTC, UT0, UT1, and UT2 and ignores
the oddities of "polar wander"; this book gives you a thorough idea as
to what all these items are and when you should worry about them. It
gives you both details on computation and on the underlying theory, very
helpful in giving you some feel as to the logic behind the math. (There
does not appear to be a single line of source code, in any language,
anywhere in the book. For me, that's a plus. I'm fine with writing
software; what I really want to read about are underlying concepts and
math and physics. Your needs, of course, may differ.)

It also covers some more obscure topics, such as
assorted calendrical systems and ephemerides for natural satellites.
There is also what looks to be a pretty good discussion of
eclipse/occultation computations, but I must admit that I merely skimmed
this; by the time I got this book, I had read Meeus'
* Elements of Solar Eclipses 1951-2200 * and had reverse-engineered
his formulae to get the information I needed.

Also discussed are physical ephemerides of planets and satellites (things such as "tilt of the north pole", central meridians, etc.), rise/set times and the complications of refraction. Note that the concepts involved remain valid, but the actual numbers determined have been refined greatly since the book was published in 1984.

** • Fundamentals of Celestial
Mechanics, by J. M. A. Danby. **
Willmann-Bell.
This book should appeal greatly to mathematically-oriented types (including
me, of course). It's more of a "theory" book than anything else,
covering such not-especially-practical cases as (for example) the motion of
an object in an inverse-

The first edition was written in 1962, in the pre-computer age.
Quite a few things that I would nowadays "brute-force" with numerical
integration on a PC were instead treated with very complex mathematics,
and this book is far and away the most sophisticated mathematically of
any listed on this page. (Or at least, it was until I added
* The Theory of Orbit Determination*
to this page; now, it's a toss-up.) The other books on this page
rarely venture into anything beyond high-school algebra; this book
uses calculus almost everywhere, along with some pretty complex
reasoning. There are places where I must concede that I didn't follow
the chain of thinking too well.

However, this book is a * second * edition, written in 1988,
and contains ample evidence of the computer revolution. Numerical
techniques are discussed in excellent detail, and a few pieces of
BASIC code are occasionally thrown in. (I generally am not a fan of
putting source code in books of this ilk, but Danby chose the situations
for such code rather well. There * are * cases where sticking to
pure mathematical formulae is insufficient.)

The book has some good discussion of topics such as perturbation theory, basic vectorial mechanics, n-body problems, and the motions of the earth and moon. However, I was mostly interested in the parts discussing orbit determination, and this book was the main source of my knowledge of that subject when I was first writing my Find_Orb orbit determination software. I'd recommend the book to anyone interested in orbit determination.

** • Methods of Orbit
Determination for the Micro Computer,
by Dan Boulet. ** Willmann-Bell.
This provides a mix of underlying theory and BASIC source code. The
book focuses on the very practical problems of how to deal with
reference systems, time systems, generating an ephemeris from
elements, and generating elements from observations, for objects
in both heliocentric and geocentric orbits. It covers

As a result of its focus on fundamentals, the book would be a decent way to educate yourself on the fundamentals of the orbit determination trade. At some point, it's likely that you will want to understand some slightly more complicated point, such as how to handle oblate planets or relativistic effects or alternative methods for numerical integration. When that happens, you'll need another book or two on the shelf.

** • Lunar Tables and Programs from
4000 BC to AD 8000, by Michelle Chapront-Touzé and Jean Chapront. **
Willmann-Bell. Gives details
of how to use the ELP2000-85 to compute lunar ephemerides over the
given time span. Using the formulae, you can compute ephemerides
at "low", "medium", or "high" precision, the difference being in
how many terms of a Poisson series are included.

The data files and a PostScript document of their use can also be found at this CDS ftp site. For many users, the PostScript documentation is all that is really needed, but the book may help in figuring out a few points here and there.

** • The Theory of Orbit Determination,
by Andrea Milani and Giovanni-Federico Gronchi. **
You can read a
table of contents and some supplemental materials here, and a
review here.

This is a * very * mathematically demanding book, and there are
large chunks of it on which I do not feel qualified to comment. The parts
that I do understand have proven to be quite useful. The range of the book
is large; certain areas such as satellite geodesy are not ones where I
expect to do much of anything, but they're interesting to read about.