a visual tour of astro-nav-int — an integer-only shipping runtime for celestial navigation
libm.
The tested builds reproduce their pinned schedules bit for bit. That is a determinism and constrained-
computer experiment, not an accuracy advantage over binary floating point. The pages below make the
distinction concrete with verbatim runs of the shipped program.
Not old math vs new math. In tables and in this library the fraction sits in a scale agreed in advance — five decimal places, or a fixed binary denominator like 248. In floating point every value carries its own movable exponent, and the scale travels with the data instead of the design.
Sines and logarithms are transcendental; someone must supply them. The navigator's came from books computed before the voyage. A conventional C program often gets them from libm at runtime. Here they come from integer ladders (48-step CORDIC) and a small angle table the library builds once, at init, by integer series.
The checkable claim is at the instruction level: the shipping images contain no floating-point operation and import no math library. Host builds pass compile and symbol audits; five ARM/RISC-V configurations run separate freestanding profiles under QEMU, with symbol and opcode audits and hashes matched to the host. Offline reference generators and the native-double test build deliberately use floating point; they are outside the shipping runtime claim.
One sight, three ways — Age-of-Sail log-haversine addition, floating point, and integer CORDIC — all landing on Hc 66.68°.
A written sextant reading has an exact scaled-integer encoding; binary64 stores a nearby binary fraction. This page separates representation error from observational error.
A guided tour from clock to fix in eight CLI verbs, followed by one coherent synthetic Sun sight through prediction, correction, and reduction. Every command block is a verbatim transcript.
These pages show the navigation layer. For how the main functions themselves stay
integer-only — the fixed-point formats and the shift-and-add ladders behind sin, cos
and atan2 in the single-header fp_math.h — see the companion visualization
of the underlying math library.
sight_reduction binary (v0.1.0). Its 4096-case determinism schedule is pinned to the
golden hash 0x3d6ddb7b86f2c7d2 on x86-64 (gcc and clang) and arm64 (clang); five
freestanding embedded targets under QEMU match the host's per-feature hashes bit for bit.
Source, tests, and validation gates:
github.com/nmicic/astro-nav-int.
Companion visualizations of the underlying integer math library:
nmicic.github.io/int-llm/viz.