- Astronomy Programs
- Cephes Mathematical Library
- Hexadecimal floating constants in C Language
- Complex Variables in C Language
- C99 Floating Point Pragmas
- Engineering Applications
- Catalogues and manuals
- Dolphins
- The Rubidium PC

aa200c.zip: JPL ephemeris reader; size 300 KB.

AA200 reads astronomical ephemerides, in the data format produced by Jet Propulsion Laboratory, and reduces the barycentric coordinates to printouts of geocentric and topocentric place. Specific configurations for the DE406 CD-ROM from Willmann-Bell, DE431, DE430, DE421, DE408, DE406, DE405, DE404, DE403, DE400, DE245, DE200, DE102, and DE118I.ZIP ephemerides are supplied. The ephemeris data files themselves are not supplied; get them from Willmann-Bell or from JPL's ftp site. Answers for DE200 from this program should agree with Astronomical Almanac tabulations from about 1984 onward. Additionally, the program can reduce star catalogue positions given in either the FK4 or FK5 system. It can also find positions from heliocentric orbital elements. Source code listings in C language are supplied with Visual Studio 2012, other Microsoft, Borland, Linux and Unix build scripts. The archive includes a Win32 executable program configured for the DE430 ephemeris. Support for NAIF .BSP file data structure has been added to accommodate DE408, DE421, DE430 and DE431. Latest update 2014-03-09.

Current version aa200c.zip

Previous version aa200c-20110306.zipaa200-118.zip: DE118I ephemeris reader; size 82 KB.

MS-DOS binary executable program AA200.EXE to read ephemeris files generated by the de118i.zip numerical integrator (which see, below). aa200c.zip contains the source code.

aa-56.zip: Self-contained ephemeris calculator; size 397 KB.

C program computes ephemerides of Sun, Moon, planets, comets, and stars using rigorous reduction methods from the _Astronomical Almanac_ and related sources. Includes PLAN404 series (see below) for positions of the planets, and a long-term extension of modern Lunar theory for the Moon's position. Reads ASCII file catalogues of stars and orbital elements. Displays all adjustments as it finds local azimuth and elevation, rise and set times, etc. Windows or MSDOS (Microsoft and Borland), Unix, VAX make files. Archive includes Windows executable program. Latest update 2017-06-17.

This program has been "Debianized" and made available in Debian and Ubuntu Linux together with an aa (1) Unix manual page. See http://packages.debian.org/testing/science/astronomical-almanac

Previous version aa-56-20130811.zip

AAPDP.ARC: Antique version for PDP-11 minicomputer

selenog.zip: Lunar librations and selenographic coordinates per DE404; size 33 KB.

Trigonometric series for the rotational Euler angles of the moon. Precision 0.05" from -1369 to +2950. Example program computes selenographic coordinates, longitude and latitude of the earth and sun.

de118i-2.zip: DE118/DE200 ephemeris; size 258KB.

N-body numerical integration of the Moon and planets uses either 80-bit extended real or 64-bit arithmetic. Physics model includes oblateness of the Earth and Moon, Earth tides, Lunar librations, relativity corrections, and 5 asteroids. With 80-bit support it reproduces the Jet Propulsion Laboratory's DE200 ephemeris to an extremely high precision. C source program tested on Windows, MSDOS, VAX, Sun, 680x0. Version de118i-2 works with the gcc-3.4 compiler. It also has build scripts for Microsoft Visual C++ and Borland C++ Builder. Extra user-defined bodies, such as asteroids, can be included. Last rev: 2004-05-13

Further details on de118i-2.zip.

Previous version de118i-1.zip:

euler.zip: Euler Angles, Orbits, and Precession; size 8KB.

Tutorial essay linking orbital elements, precession, and the rotational Euler angles of mechanics. Example C program computes precession of an orbital element set between two epochs.

plan404.zip: The planets according to DE404; size 101KB.

This archive contains trigonometric series for the motions of the nine planets, adjusted for a best fit to JPL's DE404 Long (3000 B.C. to 3000 A.D) Ephemeris. The series give heliocentric ecliptic coordinates with precision ranging from about 0.1 arc second for the Earth to 1 arc second for Pluto. A supplied example program reads Julian date and prints an ephemeris for all the planets referred to the ecliptic of date. Currently recommended precession formulas (Williams, 1994) are included. These expansions are the ones used in aa-56.zip, above.

cmoon.zip: Lunar theory adjusted to DE404 ephemeris; size 30KB.

According to JPL's DE404 long ephemeris, in 3000 B.C. the Moon was a large fraction of a degree away from where DE200 says it was. This version of cmoon.c adjusts the ELP2000-85 analytical Lunar theory of Chapront-Touze and Chapront to fit the new JPL ephemeris on the interval from 3000 B.C. to 3000 A.D. with a precision of about 0.1 arc minute. Note, for dates more recent than 1300 B.C. the ephemeris in aa-56.zip (see above) is about an order of magnitude more precise. This archive also includes a second program that extends the ELP2000-85 analytical lunar theory to cover a 22,000-year interval centered at J2000, based on the DE200 physics model. Last change: 2002-07-08.

newmoontab.zip: Table of New Moon Dates; size 1347KB.

Date and time of each new moon from 3000 B.C. to 3000 A.D. according to DE406. Text file of Julian dates and calendar dates, on the ephemeris time scale, of approximately 75,000 events.

bns.zip: Bretagnon & Simon port; size 10KB.

C language skeleton for incoporating Bretagnon & Simon's planetary tables into AA.ZIP. You must purchase their book and floppy disk from Wilmann-Bell (the book is "Planetary Programs and Tables from -4000 to +2800") to get the tables themselves.

emb.zip: Earth-moon barycenter; size 21KB.

Trigonometric expansion for the location of the Earth-Moon barycenter. A high precision fit to DE102.

pluto.zip: Pluto ephemeris; size 10 KB.

Trigonometric expansion for ephemeris of Pluto. Longitude accuracy 20" vs DE102.

brown.zip: Lunar theory; size 26 KB.

Lunar theory (Brown and ILE). Longitude accuracy about 2" from 1950-2000. The expansion cmoon.c in AA.ZIP is better for ancient dates.

marso.zip: Mars ephemeris; size 29 KB.

Trigonometric expansion for the ephemeris of Mars (Bretagnon). Medium accuracy (4" longitude), tested against DE200.

meeus2.zip: Precision of Meeus' ephemerides; size 9 KB.

Comparison of ephemerides generated from Jean Meeus' _Astronomical Algorithms_ (Willmann-Bell), which uses Bretagnon's VSOP87, Chapronts' moon, and Meeus' Pluto, with high precision numerical integrations (JPL DE200 and DE118i) from 9000 B.C. to 12000 A.D.

constel.zip: constellation boundaries.

cephes-math-28.tar.gz:mathematical functions Linux distribution; size 1754KB.

Cephes Mathematical Library. Latest Linux distribution, dated 6/4/00. Special functions and other goodies in C, including long double precision routines for 68K, 386, and sparc processors. This is the most complete distribution package of the function library (but not the most up-to-date one). It includes these sections-- double: all functions in 64-bit double precision; single: all available functions in 32-bit single precision; long double: all available functions in 80-bit extended precision; 128bit: all available functions in 128-bit long double precision; qlib: all functions in q-type extended (44 to 106 decimal) precision, includes a C++ class for the binary floating point arithmetic and a q-type calculator program; c9x-complex: new C language standard C9X data type for complex variables, header complex.h for GNU C and functions in float complex, double complex, and long double complex precisions. For latest versions, see the individual zip files below.

cephes28.zip: MS-DOS Distribution; size 1900KB.

Nearly identical to the Linux distribution, but with some additional makefiles for PC compilers. Includes a DOS executable of the 100-digit calculator. 6/5/00.

Link to Cephes mathematical functions library in netlib.

qlib.zip: Extended precision mathematical function library; size 388KB.

All functions in extended precision software floating point arithmetic (44 to 106 digit precision). Latest update 2014-10-04.

Previous version qlib-20030504.zip

double.zip: Double precision mathematical function library; size 329KB.

All functions in double precision arithmetic. Latest update 2018-12-23.

Previous version double-20141004.zip

single.zip: Single precision library.

All functions in single precision (float) arithmetic. Latest update 2014-10-04.

ldouble.zip: Long double precision functions.

Library of elementary mathematical functions, probability and elliptic integrals in 80-bit long double precision. Intel x86, ia64, Motorola 68k, and some ARM processors have this data structure. Build and test supprt for some 64-bit Unix-style operating systems has been added. Latest update 2014-10-04.

Documentation for ldouble.zip.

128bit.tgz: 128-bit long double precision functions.

Elementary mathematical functions library in 128-bit long double precision. Certain NEC, IBM, HP, and Sun computers have this data structure in either hardware or software. Intel x86 and ia64 processors do _not_ have it. Latest update 2005-04-02.

c9x-complex.tgz: Complex variables in C; size 70KB.

An experimental implementation of C99 complex type using the GNU C compiler. Complex function library, tests, and temporary gcc patches. The patches are needed for single precision complex on DEC Alpha computers. The tests include a C translation of Cody's celefunt test suite. Latest update 2005-03-20.

If you are looking for complex variables in the form of ordinary C language structures, you can find them in the Cephes libraries such as double.zip, above.

coil02.zip: Electrical inductance calculator; size 117 KB.

This program computes the electrical self inductance of various shapes and sizes of air core coils, using accurate formulas from National Bureau of Standards circulars and related sources. Archive includes C source code and an MSDOS executable. Calculations include inductance of single-layer circular solenoid of round wire, multi-layer circular solenoid, circular solenoidal current sheet, N-turn circular loop, straight round wire, circular toroid with circular winding, circular torus ring with rectangular winding, single-layer square solenoid, single-layer rectangular solenoid, multi-layer square solenoid, and wire gauge calculation. Latest update 2019-04-27.

Further details on coil02.zip.

ellf.zip: Elliptic digital filter calculator; size 80 KB.

Infinite impulse response (IIR) digital filter calculator for designing low pass, band pass, high pass, and band stop Butterworth, Chebyshev, and Cauer elliptic digital filter coefficients. C compiler build scripts are provided for Borland C++ 4.5, Microsoft Visual C++ 6, Microsoft C (old) version 6, gcc and Unix compilers. Latest update 2014-10-03.

planck.zip: Planck radiation formula; size 110 KB.

This program calculates the radiated power, integrated between given upper and lower wavelength limits, by a Planck black body at given temperature. Units are degrees Kelvin, watts, and meters. NIST values of Planck and other thermodynamic constants are used. Latest update: 2011-12-23.

Previous version planck-19990801.zip

steam.zip: Steam tables; size 17 KB.

C program to compute thermodynamic properties of water in the vapor, liquid, or solid phase. Independent variables are the temperature and either the density or the pressure. Outputs are the pressure or density and the specific internal energy, specific enthalpy, specific entropy, saturation pressure, and speed of sound. The method used is the IAPWS95 formulation recommended by the International Association for the Properties of Water and Steam. A second program using an older method from J. Keenan et al., _Steam Tables_, 1969, is included.

A separate program approximates the 1995 IAPWS saturation pressure curve within 0.01% from 273.16 to 647.08 Kelvin. It also provides a formula, distributed by Honeywell, for water vapor pressure over ice that closely matches the data in Keenan's steam table. Latest update: 12 May 2007.rtd.zip: Resistance thermometer programs; size 159 KB.

Utility programs to generate temperature - resistance calibration curves and tables for resistance temperature detector (RTD) thermometers including thermistors.fcn.c - Function subroutines to calibrate a thermistor according to the Steinhart - Hart equation.

lmdif.c - Levenberg-Marquart least squares fitting program.

thcal.c - Print table of temperature versus electrical resistance.

iprt.c: Temperature-resistance curve for industrial quality platinum resistance temperature detector (IPRT) devices following the Callendar - Van Dusen equation.

sprt.c: Temperature-resistance curve for standard quality platinum resistance temperature detector (SPRT) devices following the international temperature scale ITS-90.

quartic.c: Solve fourth-degree polynomials using a program by Thomas Kraska, from this web site

The archive includes MS-DOS or Windows executable programs and Microsoft, Borland, Unix build scripts.

Last update: 23 April 2005.

osc-0.2.zip: Audio oscillator program; size 340 KB.

osc is a real-time audio signal generator program. It transmits a sine wave to the default sound device in an endless, seamless loop. Frequency (with 0.1 Hz resolution) and amplitude are specified as command line arguments. Tested on Windows 2000, XP, Vista, and 7, and on Linux. Executables, sources, and build scripts for MS VS2008, GNU/Linux, and Cygwin are supplied. Last update: 19 Feb 2013.

pinknoise.zip: Pink noise audio generator program; size 68 KB.

Octave and third-octave band-limited audio noise generator creates a 16-bit PCM audio .WAV file by a Fourier composition method. Microsoft, Borland, Unix build scripts are provided. Windows command executables are included.

Further details on pinknoise.zip.

flutter.zip: Generate frequency modulated tones; size 80 KB.

This program creates a digital audio file that can be used to calibrate a flutter meter. The audio signal simulates a tape recorder that suffers from a known, well-defined percentage of sinusoidal speed modulation. Unix, Borland, Microsoft sources.

Last update: 2005-08-09.Further details on flutter.zip.

rubid_pc.zip: The Rubidium PC; size 43kB.

Electrical schematics for a phase locked frequency synthesizer to substitute for the error-prone clock crystal in a PC or workstation. Atomic oscillator not supplied; an external frequency standard is required. Try these vendors for surplus rubidium oscillators: Vigilante Electronics, Lehman Scientific

ieetst.zip: Test printf and scanf; size 72kB.

Program to test the accuracy of your floating point printf and scanf C library mathematical functions.

p10.zip: Test powers of 10; size 150kB.

Program to test your C compiler's ability to compile powers of 10. Binary patterns are for IEEE format.

smldbl12.zip: Long double precision printf for DJGPP version 2.03; size 138KB.

This archive contains C source and object files to improve floating point printf and scanf accuracy of D. J. Delorie's DJGPP C library (version 2.01, 2.02 or 2.03). With this change, the I/O accuracy passes tests for compliance with IEEE 754 and 854 standards. Dated 8/18/00.

djldv202.zip: Long double printf for DJGPP version 2.02; size 46KB.

djldv201.zip: Long double printf for DJGPP version 2.01; size 44KB.

djldv2.zip: Long double printf for DJGPP version 2.00; size 32KB.

djldv1.zip: Long double precision printf for DJGPP V1; size 33KB.

Long double precision printf and scanf C library replacements for Delorie's MS-DOS port of the GNU C language compiler.

hexfloat.zip: Hexadecimal floating-point constants; size 7KB.

GNU C compiler source code patch to make gcc recognize floating-point numbers written not only in the usual decimal notation, such as 1.55e1, but also numbers such as 0x1.fp3 written in hexadecimal format per the ISO C99 C language standard. In that format the 0x hex introducer and the p or P exponent field are mandatory. The exponent is a decimal number that indicates the power of 2 by which the significand part will be multiplied. Thus 0x1.f is 1 15/16, p3 multiplies it by 8, and the value of 0x1.fp3 is the same as 1.55e1. The patch works with either gcc 2.8.1 or egcs. It has been installed in current development sources of both. The feature should appear in egcs-1.2 and gcc 2.9. Latest update 11/24/98.

hex295.zip: Hexadecimal floating-point constants; size 1KB.

If you have gcc 2.95, this small patch is required for proper rendering of the hex float constants. gcc-2.95.3 needs it also. Latest update 10/29/98.

pragma.zip: C99 floating point pragmas; size 5KB.

An experimental implementation of FENV_ACCESS, FP_CONTRACT, CX_LIMITED_RANGE pragmas in C using the GNU C compiler. All three pragmas are recognized but only FENV_ACCESS actually has any effect on code generation. It prevents folding of floating point constant expressions. This version of the patch is against gcc 2.95.2. Latest update 1/2/00.

pragma-cvs.zip: C99 floating point pragmas; size 5KB.

Same as above, but patch is against current gcc CVS development sources. Latest update 1/2/00.

c99-pragma-20010601.zip; size 5KB:

Same as above, but patch is against current gcc CVS development sources. Latest update 06/01/01.

pragma-test.tgz: C99 floating point pragma tests; size 14KB.

Some test programs for the pragmas. Latest update 1/3/00.

dict150.zip: Windows 98 binary of dict dictionary client program.

Executable and Cygnus GNU C DLL library for dict version 1.5.0. See www.dict.org for further information.

dict-w2k.zip: Same dict client, but more recent Cygnus DLL. Tested on Windows 2000 and on Windows XP.

Last update: 2019-04-27.

The URL of this file is http://www.moshier.net/index.html .

Email contact steve at-sign moshier.net .