NavList:
A Community Devoted to the Preservation and Practice of Celestial Navigation and Other Methods of Traditional Wayfinding
From: Nenad Micic
Date: 2026 Jul 20, 15:20 -0700
Hi Frank,
You're right — and that observation is exactly where this project starts. A navigator summing five-place logarithms was doing fixed-point arithmetic: integers at a scale agreed in advance, with the decimal point kept in the head and in the layout of the form, never inside the number. That workflow was already integer-only in a practical fixed-point sense. So I am not claiming a new class of mathematics. The narrower claim is about the executable artifact.
What changed with software is where the fraction lives. A binary double carries its own per-value exponent — the point moved into the data. "Integer only" here means moving it back into the design, the way the tables did. At the human boundary, latitude, longitude and printed almanac angles are integer centidegrees; sextant altitudes and corrections are integer milli-arcminutes, so a written reading of 25 deg 14.3' is encoded exactly as 1,514,300 milli-arcminutes. (The physical observation is of course not exact; only its recorded value on that agreed scale is.) Inside the library, unit vectors live on a 2^-30 scale, the main trigonometry on 2^-48, and sin, cos and atan2 come from integer shift-and-add CORDIC against a small angle table the library itself computes at startup by integer series — the software equivalent of printing the tables before the voyage.
That claim is checked where it cannot hide: in the compiled artifact. The shipping C library and CLI execute no IEEE-754 operation and link no libm. Host audit builds are compiled with floating-point registers disabled where the compiler supports it and scanned for float/libm symbols; five ARM and RISC-V configurations run freestanding profiles under QEMU and are scanned for both soft-float helpers and floating-point opcodes.
The reproducibility claims are deliberately finite. The full 4096-case golden schedule matches its committed 64-bit hash on x86-64 with gcc and clang and on arm64 with clang, using both integer arithmetic backends; the five embedded configurations run six smaller feature schedules, and all 30 hashes match their host counterparts. Accuracy is a separate matter: the conventional spherical-trigonometry path stays within 0.30' of the native-double altitude reference over the sampled sweep — a bound that coincides with the half-step of its 0.01 deg output grid — and the built-in almanacs have their own separate, independently measured gates. To be fair about what it is not, this is an experiment in explicit scaling, determinism and operation on small processors, not a navigation instrument. It is not more accurate than binary64, and on a laptop it is generally slower. The offline reference generators and native-double test build do use floating point; the claim is about the shipping runtime.
One concrete piece of kinship. Take latitude 40 N, declination 20 N, LHA 346. Worked the 1850s way — five-place log haversines, added by hand — the sight gives Hc 66 deg 40.8'. The integer library prints 66.68 deg. Same sight, same discipline, two centuries apart.
I put together four project pages that walk through all of this with real, unedited runs of the program, plus a fifth companion page for the underlying integer math. I am listing every URL directly so the sub-pages are not hidden behind the overview cards:
1. The overview: the question above, the short answer, and where the "integer only" claim precisely lives.
https://nmicic.github.io/astro-nav-int/viz/
2. One sight worked three ways — log tables by hand, floating point, integer CORDIC — with an interactive compass showing the shift-and-add ladder homing in on the azimuth.
https://nmicic.github.io/astro-nav-int/viz/three-ages.html
3. What a sextant reading is to a human, to an integer, and to a binary double, with a widget that prints the exact value a double actually stores.
https://nmicic.github.io/astro-nav-int/viz/human-machine.html
4. A guided tour of the navigation chain, followed by one coherent synthetic Sun sight through prediction, correction and reduction.
https://nmicic.github.io/astro-nav-int/viz/end-to-end.html
5. The companion explanation of how the underlying math header keeps sin, cos and atan2 integer-only.
https://nmicic.github.io/int-llm/viz/
Source, tests, and validation gates: https://github.com/nmicic/astro-nav-int
Thanks,
Nenad






