Skip to content

Prepare v0.5.0 and start a changelog - #123

Merged
langestefan merged 7 commits into
mainfrom
release/v0.5.0
Jul 31, 2026
Merged

Prepare v0.5.0 and start a changelog#123
langestefan merged 7 commits into
mainfrom
release/v0.5.0

Conversation

@langestefan

Copy link
Copy Markdown
Member

Prepares the v0.5.0 release and starts keeping a changelog.

Changelog

Adds CHANGELOG.md in Keep a Changelog format,
backfilled with the user-facing changes since v0.4.2. That came from the 18 substantive
merged pull requests in that range, with the dependabot and pre-commit commits filtered out:
Michalsky, Iqbal, Interpolated and solar_rate, type-generic precision, ForwardDiff
support, Measurements support, transit_sunrise_sunset_seconds, the TimeZones extension
move, and the unit_clamp and magnitude-safe time base fixes.

Releases before v0.5.0 predate the file and are left to the GitHub releases page rather than
reconstructed, which seemed like poor value for the archaeology involved.

Adds .github/workflows/enforce-changelog.yml, the
DocumenterVitepress.jl
workflow, so pull requests have to record their own entry. A pull request that genuinely
needs none can carry the skip-changelog label.

Version

Bumps Project.toml to 0.5.0. A minor bump rather than a patch, since
transit_sunrise_sunset_seconds is new public API.

Benchmarking guide

Drops Iqbal from the benchmarking guide: the accuracy, single call, vector, solposx
comparison, and Pareto sections, plus its entry in the solposx function map. The colour
vectors are trimmed in step with the algorithm name vectors they are indexed against, since a
mismatch there would be a BoundsError during the docs build rather than a cosmetic problem.
Iqbal is untouched in the positioning and precision guides.

Note for the tag

The changelog entries sit under ## unreleased rather than a ## v0.5.0 heading, so that
any further fixes for this release land in the same section and the date is not guessed. At
tag time that heading becomes ## v0.5.0 - <date> with a fresh empty ## unreleased above
it.

🤖 Generated with Claude Code

langestefan and others added 2 commits July 31, 2026 16:14
Adds CHANGELOG.md in Keep a Changelog format, backfilled with the user-facing
changes since v0.4.2, and the enforce-changelog workflow so pull requests have
to record their own entry. A pull request that genuinely needs no entry can
carry the skip-changelog label.

Earlier releases predate the file and are left to the GitHub releases page
rather than reconstructed.

Also bumps the version to 0.5.0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NQ9zmXUHQtA5suiMB8UdA7
Removes Iqbal from the accuracy, single call, vector, solposx comparison, and
Pareto sections, along with its entry in the solposx function map. The colour
vectors are trimmed in step with the algorithm name vectors they are indexed
against, so the two stay the same length.

Iqbal remains documented in the positioning guide and the precision guide.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NQ9zmXUHQtA5suiMB8UdA7
Comment thread .github/workflows/enforce-changelog.yml Fixed
Comment thread .github/workflows/enforce-changelog.yml Fixed
langestefan and others added 4 commits July 31, 2026 16:24
Addresses the two CodeQL findings on the new workflow.

Adds a permissions block granting only contents: read, since the job just
inspects the diff. Six of the existing workflows already declare one.

Pins dangoslen/changelog-enforcer to the commit behind v3.7.0 rather than the
floating v3 tag, because a tag on a third party action can be repointed at
different code. The other third party actions in this repository are still on
tags, but that is not a reason to add another unpinned one.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NQ9zmXUHQtA5suiMB8UdA7
The Arc80 bibliography entry pointed at "Collector Control System Simulation"
by Archer, Brockett and Oakes, which is an unrelated 1980 conference paper. The
refraction model actually comes from Archer's comment on Walraven's
"Calculating the position of the sun", which is consistent with the docstring
noting that the method was developed for the Walraven algorithm. Replaced with
the correct entry, verified against Crossref, and the home page now links the
DOI as the other refraction references do.

Moves uncertainty propagation out of the home page and into its own guide,
alongside the automatic differentiation one it mirrors. The home page keeps the
short version and points at the guide for uncertain refraction parameters and
event times.

Names the changelog section v0.5.0 rather than leaving it unreleased.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NQ9zmXUHQtA5suiMB8UdA7
The guide had drifted from the code in three ways that would mislead a
contributor.

Its worked example called datetime2julian and subtracted the J2000 epoch by
hand, which is the pattern the package specifically avoids: a full Julian Date
is around 2.45e6, so materializing it at T leaves Float32 with no useful
precision. No algorithm in the package does this. Replaced with the timebase.jl
helpers, plus a warning explaining why.

The default refraction example built HUGHES(), which is HUGHES{Float64} and
silently promotes a Float32 or BigFloat observer back to Float64. NOAA uses
HUGHES{T}(); the guide now does too.

The export step described editing an explicit import list and export line in
src/SolarPosition.jl. That code does not exist, since the main module uses
@reexport using .Positioning, so exporting from the submodule is the whole job.

Also documents steps the guide never covered: registering the algorithm in the
shared test_algorithms() list, the 84.375 s grid convention for reference
timestamps, and the changelog entry the new workflow now requires. Test paths
corrected to test/positioning/, and the azimuth range to the half open interval
the code actually produces.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NQ9zmXUHQtA5suiMB8UdA7
The section opened with a nineteen line paragraph explaining everything the
reader had not seen yet, followed by a seventy line code block.

Splits the code into four steps, each with a sentence above it: the sun's
position over the day, the tracker rotation, the angles of incidence, and the
analytical ideal. The figure is built in a final block of its own.

The observations move below the figure, where they can be read against it, and
are cut to the three that are worth the space. All three were checked against
the computed values: the fixed panel does beat the tracker at solar noon, 1.08
degrees against 28.92, the tracked angle of incidence reaches 0.05 degrees at
azimuth 269.9, and the noon angle of incidence equals the solar zenith to the
digit.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NQ9zmXUHQtA5suiMB8UdA7
@github-actions

github-actions Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (Julia vlts)

Time benchmarks
main 5432526... main / 5432526...
ours/n=100/Interpolated 0.0273 ± 0.0003 ms 0.0274 ± 0.00029 ms 0.997 ± 0.015
ours/n=100/Iqbal 0.0149 ± 0.0017 ms 0.0151 ± 0.0017 ms 0.991 ± 0.16
ours/n=100/Michalsky 0.033 ± 0.00023 ms 0.0329 ± 0.00027 ms 1 ± 0.011
ours/n=100/NOAA 0.0438 ± 0.00028 ms 0.0438 ± 0.0003 ms 1 ± 0.0094
ours/n=100/PSA 0.0171 ± 0.00017 ms 0.017 ± 0.00015 ms 1.01 ± 0.013
ours/n=100/SPA 0.29 ± 0.0081 ms 0.29 ± 0.0079 ms 1 ± 0.039
ours/n=100/USNO 0.042 ± 0.0017 ms 0.0422 ± 0.0017 ms 0.996 ± 0.057
ours/n=100/Walraven 0.0192 ± 0.0016 ms 0.0192 ± 0.00013 ms 1 ± 0.083
ours/n=1000/Interpolated 0.264 ± 0.017 ms 0.265 ± 0.017 ms 0.998 ± 0.09
ours/n=1000/Iqbal 0.138 ± 0.00071 ms 0.139 ± 0.0008 ms 0.99 ± 0.0077
ours/n=1000/Michalsky 0.308 ± 0.0086 ms 0.307 ± 0.0088 ms 1 ± 0.04
ours/n=1000/NOAA 0.42 ± 0.0096 ms 0.413 ± 0.0084 ms 1.02 ± 0.031
ours/n=1000/PSA 0.173 ± 0.0092 ms 0.171 ± 0.0092 ms 1.01 ± 0.076
ours/n=1000/SPA 2.97 ± 0.019 ms 2.96 ± 0.019 ms 1 ± 0.0092
ours/n=1000/USNO 0.393 ± 0.0086 ms 0.395 ± 0.0084 ms 0.997 ± 0.03
ours/n=1000/Walraven 0.2 ± 0.0096 ms 0.2 ± 0.0099 ms 0.999 ± 0.069
ours/n=10000/Interpolated 2.65 ± 0.011 ms 2.65 ± 0.01 ms 0.999 ± 0.0056
ours/n=10000/Iqbal 1.46 ± 0.0093 ms 1.47 ± 0.011 ms 0.993 ± 0.0095
ours/n=10000/Michalsky 3.19 ± 0.014 ms 3.18 ± 0.011 ms 1 ± 0.0055
ours/n=10000/NOAA 4.17 ± 0.011 ms 4.17 ± 0.015 ms 1 ± 0.0045
ours/n=10000/PSA 1.73 ± 0.0055 ms 1.73 ± 0.0055 ms 1 ± 0.0045
ours/n=10000/SPA 29.8 ± 0.18 ms 29.7 ± 0.18 ms 1 ± 0.0088
ours/n=10000/USNO 3.96 ± 0.01 ms 3.96 ± 0.013 ms 0.999 ± 0.0042
ours/n=10000/Walraven 1.95 ± 0.0047 ms 1.94 ± 0.0077 ms 1 ± 0.0047
ours/n=100000/Interpolated 26.6 ± 0.096 ms 26.6 ± 0.13 ms 0.999 ± 0.006
ours/n=100000/Iqbal 14.8 ± 0.052 ms 14.9 ± 0.052 ms 0.993 ± 0.0049
ours/n=100000/Michalsky 32 ± 0.12 ms 31.9 ± 0.11 ms 1 ± 0.0051
ours/n=100000/NOAA 42.5 ± 0.18 ms 42.6 ± 0.28 ms 0.999 ± 0.0077
ours/n=100000/PSA 17.4 ± 0.041 ms 17.4 ± 0.047 ms 1 ± 0.0036
ours/n=100000/SPA 300 ± 1.7 ms 300 ± 1.7 ms 1 ± 0.0081
ours/n=100000/USNO 39.9 ± 0.15 ms 40 ± 0.15 ms 0.998 ± 0.0052
ours/n=100000/Walraven 19.6 ± 0.041 ms 19.6 ± 0.072 ms 1 ± 0.0043
refraction/ARCHER 0.00024 ± 1e-05 ms 0.00024 ± 1e-05 ms 1 ± 0.059
refraction/BENNETT 0.000231 ± 1e-06 ms 0.00023 ± 1e-06 ms 1 ± 0.0062
refraction/MICHALSKY 0.0002 ± 1e-06 ms 0.0002 ± 1e-06 ms 1 ± 0.0071
refraction/NoRefraction 0.0002 ± 1e-05 ms 0.0002 ± 1e-05 ms 1 ± 0.071
refraction/SG2 0.000241 ± 1e-05 ms 0.000241 ± 1e-06 ms 1 ± 0.042
single/Interpolated 0.000381 ± 0 ms 0.000391 ± 1e-06 ms 0.974 ± 0.0025
single/Iqbal 0.00018 ± 1e-05 ms 0.00018 ± 1e-05 ms 1 ± 0.079
single/Michalsky 0.000321 ± 1e-05 ms 0.000321 ± 9e-06 ms 1 ± 0.042
single/NOAA 0.000451 ± 1e-06 ms 0.000451 ± 1e-06 ms 1 ± 0.0031
single/PSA 0.0002 ± 1e-05 ms 0.0002 ± 1e-05 ms 1 ± 0.071
single/SPA 0.00297 ± 1.1e-05 ms 0.00296 ± 1.1e-05 ms 1 ± 0.0053
single/USNO 0.000411 ± 1e-06 ms 0.000411 ± 0 ms 1 ± 0.0024
single/Walraven 0.00023 ± 1e-06 ms 0.00023 ± 1e-05 ms 1 ± 0.044
solposx/n=100/Iqbal 2.29 ± 0.038 ms 2.25 ± 0.03 ms 1.02 ± 0.022
solposx/n=100/NOAA 4.12 ± 0.053 ms 4.01 ± 0.046 ms 1.03 ± 0.018
solposx/n=100/PSA 2.93 ± 0.039 ms 2.87 ± 0.036 ms 1.02 ± 0.019
solposx/n=100/SPA 3.16 ± 0.037 ms 3.16 ± 0.031 ms 0.999 ± 0.015
solposx/n=100/USNO 3.16 ± 0.044 ms 3.08 ± 0.032 ms 1.02 ± 0.018
solposx/n=100/Walraven 1.15 ± 0.022 ms 1.14 ± 0.019 ms 1.01 ± 0.026
solposx/n=1000/Iqbal 2.61 ± 0.054 ms 2.54 ± 0.039 ms 1.03 ± 0.027
solposx/n=1000/NOAA 4.86 ± 0.081 ms 4.69 ± 0.056 ms 1.03 ± 0.021
solposx/n=1000/PSA 3.35 ± 0.051 ms 3.3 ± 0.068 ms 1.01 ± 0.026
solposx/n=1000/SPA 7.8 ± 0.084 ms 7.71 ± 0.075 ms 1.01 ± 0.015
solposx/n=1000/USNO 7.57 ± 0.075 ms 7.31 ± 0.1 ms 1.04 ± 0.018
solposx/n=1000/Walraven 1.45 ± 0.035 ms 1.45 ± 0.038 ms 1 ± 0.036
solposx/n=10000/Iqbal 5.49 ± 0.084 ms 5.42 ± 0.065 ms 1.01 ± 0.02
solposx/n=10000/NOAA 10.8 ± 0.12 ms 10.8 ± 0.11 ms 1 ± 0.015
solposx/n=10000/PSA 6.8 ± 0.086 ms 6.76 ± 0.083 ms 1.01 ± 0.018
solposx/n=10000/SPA 51.7 ± 0.38 ms 50.9 ± 0.29 ms 1.02 ± 0.0094
solposx/n=10000/USNO 51 ± 0.84 ms 48.9 ± 0.68 ms 1.04 ± 0.022
solposx/n=10000/Walraven 4 ± 0.048 ms 4.01 ± 0.071 ms 0.996 ± 0.021
solposx/n=100000/Iqbal 31.4 ± 0.42 ms 31.1 ± 0.59 ms 1.01 ± 0.023
solposx/n=100000/NOAA 67.9 ± 0.38 ms 67.6 ± 0.56 ms 1.01 ± 0.01
solposx/n=100000/PSA 39.9 ± 0.38 ms 39.7 ± 0.39 ms 1 ± 0.014
solposx/n=100000/SPA 507 ± 1.6 ms 502 ± 2.6 ms 1.01 ± 0.0062
solposx/n=100000/USNO 485 ± 31 ms 471 ± 34 ms 1.03 ± 0.099
solposx/n=100000/Walraven 29.1 ± 0.32 ms 28.9 ± 0.22 ms 1.01 ± 0.014
time_to_load 0.118 ± 0.0015 s 0.112 ± 0.0011 s 1.05 ± 0.016
Memory benchmarks
main 5432526... main / 5432526...
ours/n=100/Interpolated 5 allocs: 4.38 kB 5 allocs: 4.38 kB 1
ours/n=100/Iqbal 3 allocs: 2.62 kB 3 allocs: 2.62 kB 1
ours/n=100/Michalsky 5 allocs: 4.38 kB 5 allocs: 4.38 kB 1
ours/n=100/NOAA 5 allocs: 4.38 kB 5 allocs: 4.38 kB 1
ours/n=100/PSA 3 allocs: 2.62 kB 3 allocs: 2.62 kB 1
ours/n=100/SPA 5 allocs: 4.38 kB 5 allocs: 4.38 kB 1
ours/n=100/USNO 3 allocs: 2.62 kB 3 allocs: 2.62 kB 1
ours/n=100/Walraven 3 allocs: 2.62 kB 3 allocs: 2.62 kB 1
ours/n=1000/Interpolated 5 allocs: 0.0388 MB 5 allocs: 0.0388 MB 1
ours/n=1000/Iqbal 3 allocs: 23.8 kB 3 allocs: 23.8 kB 1
ours/n=1000/Michalsky 5 allocs: 0.0388 MB 5 allocs: 0.0388 MB 1
ours/n=1000/NOAA 5 allocs: 0.0388 MB 5 allocs: 0.0388 MB 1
ours/n=1000/PSA 3 allocs: 23.8 kB 3 allocs: 23.8 kB 1
ours/n=1000/SPA 5 allocs: 0.0388 MB 5 allocs: 0.0388 MB 1
ours/n=1000/USNO 3 allocs: 23.8 kB 3 allocs: 23.8 kB 1
ours/n=1000/Walraven 3 allocs: 23.8 kB 3 allocs: 23.8 kB 1
ours/n=10000/Interpolated 10 allocs: 0.382 MB 10 allocs: 0.382 MB 1
ours/n=10000/Iqbal 6 allocs: 0.229 MB 6 allocs: 0.229 MB 1
ours/n=10000/Michalsky 10 allocs: 0.382 MB 10 allocs: 0.382 MB 1
ours/n=10000/NOAA 10 allocs: 0.382 MB 10 allocs: 0.382 MB 1
ours/n=10000/PSA 6 allocs: 0.229 MB 6 allocs: 0.229 MB 1
ours/n=10000/SPA 10 allocs: 0.382 MB 10 allocs: 0.382 MB 1
ours/n=10000/USNO 6 allocs: 0.229 MB 6 allocs: 0.229 MB 1
ours/n=10000/Walraven 6 allocs: 0.229 MB 6 allocs: 0.229 MB 1
ours/n=100000/Interpolated 10 allocs: 3.81 MB 10 allocs: 3.81 MB 1
ours/n=100000/Iqbal 6 allocs: 2.29 MB 6 allocs: 2.29 MB 1
ours/n=100000/Michalsky 10 allocs: 3.81 MB 10 allocs: 3.81 MB 1
ours/n=100000/NOAA 10 allocs: 3.81 MB 10 allocs: 3.81 MB 1
ours/n=100000/PSA 6 allocs: 2.29 MB 6 allocs: 2.29 MB 1
ours/n=100000/SPA 10 allocs: 3.81 MB 10 allocs: 3.81 MB 1
ours/n=100000/USNO 6 allocs: 2.29 MB 6 allocs: 2.29 MB 1
ours/n=100000/Walraven 6 allocs: 2.29 MB 6 allocs: 2.29 MB 1
refraction/ARCHER 0 allocs: 0 B 0 allocs: 0 B
refraction/BENNETT 0 allocs: 0 B 0 allocs: 0 B
refraction/MICHALSKY 0 allocs: 0 B 0 allocs: 0 B
refraction/NoRefraction 0 allocs: 0 B 0 allocs: 0 B
refraction/SG2 0 allocs: 0 B 0 allocs: 0 B
single/Interpolated 0 allocs: 0 B 0 allocs: 0 B
single/Iqbal 0 allocs: 0 B 0 allocs: 0 B
single/Michalsky 0 allocs: 0 B 0 allocs: 0 B
single/NOAA 0 allocs: 0 B 0 allocs: 0 B
single/PSA 0 allocs: 0 B 0 allocs: 0 B
single/SPA 0 allocs: 0 B 0 allocs: 0 B
single/USNO 0 allocs: 0 B 0 allocs: 0 B
single/Walraven 0 allocs: 0 B 0 allocs: 0 B
solposx/n=100/Iqbal 19 allocs: 0.734 kB 19 allocs: 0.734 kB 1
solposx/n=100/NOAA 19 allocs: 0.734 kB 19 allocs: 0.734 kB 1
solposx/n=100/PSA 0.057 k allocs: 1.61 kB 0.057 k allocs: 1.61 kB 1
solposx/n=100/SPA 19 allocs: 0.734 kB 19 allocs: 0.734 kB 1
solposx/n=100/USNO 19 allocs: 0.734 kB 19 allocs: 0.734 kB 1
solposx/n=100/Walraven 19 allocs: 0.734 kB 19 allocs: 0.734 kB 1
solposx/n=1000/Iqbal 19 allocs: 0.734 kB 19 allocs: 0.734 kB 1
solposx/n=1000/NOAA 19 allocs: 0.734 kB 19 allocs: 0.734 kB 1
solposx/n=1000/PSA 0.057 k allocs: 1.61 kB 0.057 k allocs: 1.61 kB 1
solposx/n=1000/SPA 19 allocs: 0.734 kB 19 allocs: 0.734 kB 1
solposx/n=1000/USNO 19 allocs: 0.734 kB 19 allocs: 0.734 kB 1
solposx/n=1000/Walraven 19 allocs: 0.734 kB 19 allocs: 0.734 kB 1
solposx/n=10000/Iqbal 19 allocs: 0.734 kB 19 allocs: 0.734 kB 1
solposx/n=10000/NOAA 19 allocs: 0.734 kB 19 allocs: 0.734 kB 1
solposx/n=10000/PSA 0.057 k allocs: 1.61 kB 0.057 k allocs: 1.61 kB 1
solposx/n=10000/SPA 19 allocs: 0.734 kB 19 allocs: 0.734 kB 1
solposx/n=10000/USNO 19 allocs: 0.734 kB 19 allocs: 0.734 kB 1
solposx/n=10000/Walraven 19 allocs: 0.734 kB 19 allocs: 0.734 kB 1
solposx/n=100000/Iqbal 19 allocs: 0.734 kB 19 allocs: 0.734 kB 1
solposx/n=100000/NOAA 19 allocs: 0.734 kB 19 allocs: 0.734 kB 1
solposx/n=100000/PSA 0.057 k allocs: 1.61 kB 0.057 k allocs: 1.61 kB 1
solposx/n=100000/SPA 19 allocs: 0.734 kB 19 allocs: 0.734 kB 1
solposx/n=100000/USNO 19 allocs: 0.734 kB 19 allocs: 0.734 kB 1
solposx/n=100000/Walraven 19 allocs: 0.734 kB 19 allocs: 0.734 kB 1
time_to_load 0.153 k allocs: 14.5 kB 0.153 k allocs: 14.5 kB 1

@github-actions

github-actions Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (Julia v1)

Time benchmarks
main 5432526... main / 5432526...
ours/n=100/Interpolated 0.0261 ± 0.00021 ms 0.0262 ± 0.00021 ms 0.995 ± 0.011
ours/n=100/Iqbal 0.0133 ± 8e-05 ms 0.0133 ± 9e-05 ms 1 ± 0.0091
ours/n=100/Michalsky 0.0322 ± 0.00018 ms 0.0319 ± 0.00017 ms 1.01 ± 0.0078
ours/n=100/NOAA 0.043 ± 0.00019 ms 0.0424 ± 0.0002 ms 1.01 ± 0.0066
ours/n=100/PSA 0.0167 ± 0.00014 ms 0.0167 ± 0.00017 ms 1 ± 0.013
ours/n=100/SPA 0.304 ± 0.0082 ms 0.305 ± 0.0083 ms 1 ± 0.038
ours/n=100/USNO 0.0409 ± 0.00019 ms 0.0408 ± 0.00021 ms 1 ± 0.007
ours/n=100/Walraven 0.0197 ± 0.00048 ms 0.0201 ± 0.00055 ms 0.978 ± 0.036
ours/n=1000/Interpolated 0.26 ± 0.009 ms 0.26 ± 0.0089 ms 0.997 ± 0.048
ours/n=1000/Iqbal 0.137 ± 0.0087 ms 0.137 ± 0.0016 ms 1 ± 0.064
ours/n=1000/Michalsky 0.318 ± 0.0087 ms 0.317 ± 0.0087 ms 1 ± 0.039
ours/n=1000/NOAA 0.421 ± 0.0092 ms 0.419 ± 0.0088 ms 1.01 ± 0.031
ours/n=1000/PSA 0.167 ± 0.0087 ms 0.167 ± 0.0086 ms 1 ± 0.073
ours/n=1000/SPA 3.12 ± 0.021 ms 3.12 ± 0.016 ms 1 ± 0.0085
ours/n=1000/USNO 0.4 ± 0.0093 ms 0.397 ± 0.0086 ms 1.01 ± 0.032
ours/n=1000/Walraven 0.198 ± 0.0089 ms 0.198 ± 0.0087 ms 1 ± 0.063
ours/n=10000/Interpolated 2.7 ± 0.0095 ms 2.7 ± 0.0099 ms 0.999 ± 0.0051
ours/n=10000/Iqbal 1.49 ± 0.011 ms 1.47 ± 0.011 ms 1.02 ± 0.011
ours/n=10000/Michalsky 3.29 ± 0.012 ms 3.28 ± 0.013 ms 1 ± 0.0055
ours/n=10000/NOAA 4.23 ± 0.015 ms 4.21 ± 0.018 ms 1 ± 0.0057
ours/n=10000/PSA 1.7 ± 0.0076 ms 1.69 ± 0.0078 ms 1 ± 0.0064
ours/n=10000/SPA 31.4 ± 0.072 ms 31.4 ± 0.085 ms 1 ± 0.0035
ours/n=10000/USNO 4.03 ± 0.014 ms 4.02 ± 0.013 ms 1 ± 0.0047
ours/n=10000/Walraven 1.99 ± 0.011 ms 2 ± 0.0097 ms 0.999 ± 0.0073
ours/n=100000/Interpolated 27.1 ± 0.72 ms 27.1 ± 0.74 ms 0.998 ± 0.038
ours/n=100000/Iqbal 15.2 ± 0.15 ms 14.8 ± 0.11 ms 1.02 ± 0.013
ours/n=100000/Michalsky 33.1 ± 0.81 ms 32.9 ± 0.78 ms 1.01 ± 0.034
ours/n=100000/NOAA 43.2 ± 0.82 ms 42.9 ± 0.75 ms 1.01 ± 0.026
ours/n=100000/PSA 17.1 ± 0.49 ms 17.1 ± 0.15 ms 1 ± 0.03
ours/n=100000/SPA 316 ± 1.8 ms 316 ± 1.9 ms 1 ± 0.0082
ours/n=100000/USNO 40.5 ± 0.27 ms 40.5 ± 0.19 ms 1 ± 0.0081
ours/n=100000/Walraven 20 ± 0.25 ms 20.1 ± 0.22 ms 0.997 ± 0.016
refraction/ARCHER 0.00024 ± 1.1e-05 ms 0.00024 ± 1e-05 ms 1 ± 0.062
refraction/BENNETT 0.000231 ± 1e-05 ms 0.000231 ± 1e-05 ms 1 ± 0.061
refraction/MICHALSKY 0.0002 ± 1e-06 ms 0.0002 ± 1e-06 ms 1 ± 0.0071
refraction/NoRefraction 0.0002 ± 1e-05 ms 0.0002 ± 9e-06 ms 1 ± 0.067
refraction/SG2 0.00025 ± 1e-05 ms 0.00025 ± 1e-06 ms 1 ± 0.04
single/Interpolated 0.000411 ± 1e-05 ms 0.000401 ± 1e-05 ms 1.02 ± 0.036
single/Iqbal 0.00018 ± 1e-06 ms 0.00018 ± 1e-06 ms 1 ± 0.0079
single/Michalsky 0.000321 ± 1e-05 ms 0.00033 ± 1e-06 ms 0.973 ± 0.03
single/NOAA 0.000461 ± 1e-05 ms 0.000451 ± 9e-06 ms 1.02 ± 0.03
single/PSA 0.0002 ± 1e-05 ms 0.0002 ± 1e-05 ms 1 ± 0.071
single/SPA 0.00313 ± 1e-05 ms 0.00313 ± 1e-05 ms 1 ± 0.0045
single/USNO 0.000421 ± 1e-05 ms 0.000421 ± 1e-05 ms 1 ± 0.034
single/Walraven 0.00024 ± 1e-05 ms 0.000231 ± 1e-05 ms 1.04 ± 0.062
solposx/n=100/Iqbal 2.26 ± 0.034 ms 2.3 ± 0.042 ms 0.98 ± 0.023
solposx/n=100/NOAA 4.04 ± 0.049 ms 4.15 ± 0.093 ms 0.974 ± 0.025
solposx/n=100/PSA 2.89 ± 0.05 ms 3.01 ± 0.076 ms 0.959 ± 0.029
solposx/n=100/SPA 3.15 ± 0.032 ms 3.27 ± 0.099 ms 0.964 ± 0.031
solposx/n=100/USNO 3.08 ± 0.04 ms 3.14 ± 0.058 ms 0.982 ± 0.022
solposx/n=100/Walraven 1.15 ± 0.025 ms 1.18 ± 0.032 ms 0.969 ± 0.034
solposx/n=1000/Iqbal 2.55 ± 0.067 ms 2.59 ± 0.044 ms 0.986 ± 0.031
solposx/n=1000/NOAA 4.76 ± 0.095 ms 4.79 ± 0.082 ms 0.994 ± 0.026
solposx/n=1000/PSA 3.3 ± 0.085 ms 3.31 ± 0.059 ms 0.997 ± 0.031
solposx/n=1000/SPA 7.73 ± 0.12 ms 7.59 ± 0.055 ms 1.02 ± 0.017
solposx/n=1000/USNO 7.42 ± 0.15 ms 7.33 ± 0.088 ms 1.01 ± 0.024
solposx/n=1000/Walraven 1.44 ± 0.036 ms 1.45 ± 0.034 ms 0.994 ± 0.034
solposx/n=10000/Iqbal 5.4 ± 0.1 ms 5.45 ± 0.084 ms 0.99 ± 0.024
solposx/n=10000/NOAA 11 ± 0.17 ms 11.1 ± 0.22 ms 0.997 ± 0.025
solposx/n=10000/PSA 6.73 ± 0.15 ms 6.8 ± 0.16 ms 0.99 ± 0.031
solposx/n=10000/SPA 51.8 ± 0.35 ms 51.2 ± 0.49 ms 1.01 ± 0.012
solposx/n=10000/USNO 50 ± 0.9 ms 50.3 ± 1 ms 0.995 ± 0.027
solposx/n=10000/Walraven 4 ± 0.063 ms 4.03 ± 0.075 ms 0.993 ± 0.024
solposx/n=100000/Iqbal 31.9 ± 0.51 ms 32.1 ± 0.64 ms 0.991 ± 0.025
solposx/n=100000/NOAA 69.4 ± 0.61 ms 69.8 ± 0.69 ms 0.994 ± 0.013
solposx/n=100000/PSA 39.6 ± 0.39 ms 39.9 ± 0.35 ms 0.994 ± 0.013
solposx/n=100000/SPA 500 ± 4.6 ms 507 ± 6.4 ms 0.986 ± 0.015
solposx/n=100000/USNO 480 ± 32 ms 482 ± 32 ms 0.996 ± 0.094
solposx/n=100000/Walraven 29.4 ± 0.24 ms 29.5 ± 0.37 ms 0.994 ± 0.015
time_to_load 0.103 ± 0.0018 s 0.107 ± 0.0017 s 0.968 ± 0.023
Memory benchmarks
main 5432526... main / 5432526...
ours/n=100/Interpolated 10 allocs: 4.53 kB 10 allocs: 4.53 kB 1
ours/n=100/Iqbal 6 allocs: 2.72 kB 6 allocs: 2.72 kB 1
ours/n=100/Michalsky 10 allocs: 4.53 kB 10 allocs: 4.53 kB 1
ours/n=100/NOAA 10 allocs: 4.53 kB 10 allocs: 4.53 kB 1
ours/n=100/PSA 6 allocs: 2.72 kB 6 allocs: 2.72 kB 1
ours/n=100/SPA 10 allocs: 4.53 kB 10 allocs: 4.53 kB 1
ours/n=100/USNO 6 allocs: 2.72 kB 6 allocs: 2.72 kB 1
ours/n=100/Walraven 6 allocs: 2.72 kB 6 allocs: 2.72 kB 1
ours/n=1000/Interpolated 15 allocs: 0.0385 MB 15 allocs: 0.0385 MB 1
ours/n=1000/Iqbal 9 allocs: 23.6 kB 9 allocs: 23.6 kB 1
ours/n=1000/Michalsky 15 allocs: 0.0385 MB 15 allocs: 0.0385 MB 1
ours/n=1000/NOAA 15 allocs: 0.0385 MB 15 allocs: 0.0385 MB 1
ours/n=1000/PSA 9 allocs: 23.6 kB 9 allocs: 23.6 kB 1
ours/n=1000/SPA 15 allocs: 0.0385 MB 15 allocs: 0.0385 MB 1
ours/n=1000/USNO 9 allocs: 23.6 kB 9 allocs: 23.6 kB 1
ours/n=1000/Walraven 9 allocs: 23.6 kB 9 allocs: 23.6 kB 1
ours/n=10000/Interpolated 15 allocs: 0.382 MB 15 allocs: 0.382 MB 1
ours/n=10000/Iqbal 9 allocs: 0.229 MB 9 allocs: 0.229 MB 1
ours/n=10000/Michalsky 15 allocs: 0.382 MB 15 allocs: 0.382 MB 1
ours/n=10000/NOAA 15 allocs: 0.382 MB 15 allocs: 0.382 MB 1
ours/n=10000/PSA 9 allocs: 0.229 MB 9 allocs: 0.229 MB 1
ours/n=10000/SPA 15 allocs: 0.382 MB 15 allocs: 0.382 MB 1
ours/n=10000/USNO 9 allocs: 0.229 MB 9 allocs: 0.229 MB 1
ours/n=10000/Walraven 9 allocs: 0.229 MB 9 allocs: 0.229 MB 1
ours/n=100000/Interpolated 15 allocs: 3.82 MB 15 allocs: 3.82 MB 1
ours/n=100000/Iqbal 9 allocs: 2.29 MB 9 allocs: 2.29 MB 1
ours/n=100000/Michalsky 15 allocs: 3.82 MB 15 allocs: 3.82 MB 1
ours/n=100000/NOAA 15 allocs: 3.82 MB 15 allocs: 3.82 MB 1
ours/n=100000/PSA 9 allocs: 2.29 MB 9 allocs: 2.29 MB 1
ours/n=100000/SPA 15 allocs: 3.82 MB 15 allocs: 3.82 MB 1
ours/n=100000/USNO 9 allocs: 2.29 MB 9 allocs: 2.29 MB 1
ours/n=100000/Walraven 9 allocs: 2.29 MB 9 allocs: 2.29 MB 1
refraction/ARCHER 0 allocs: 0 B 0 allocs: 0 B
refraction/BENNETT 0 allocs: 0 B 0 allocs: 0 B
refraction/MICHALSKY 0 allocs: 0 B 0 allocs: 0 B
refraction/NoRefraction 0 allocs: 0 B 0 allocs: 0 B
refraction/SG2 0 allocs: 0 B 0 allocs: 0 B
single/Interpolated 0 allocs: 0 B 0 allocs: 0 B
single/Iqbal 0 allocs: 0 B 0 allocs: 0 B
single/Michalsky 0 allocs: 0 B 0 allocs: 0 B
single/NOAA 0 allocs: 0 B 0 allocs: 0 B
single/PSA 0 allocs: 0 B 0 allocs: 0 B
single/SPA 0 allocs: 0 B 0 allocs: 0 B
single/USNO 0 allocs: 0 B 0 allocs: 0 B
single/Walraven 0 allocs: 0 B 0 allocs: 0 B
solposx/n=100/Iqbal 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=100/NOAA 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=100/PSA 0.039 k allocs: 1.2 kB 0.039 k allocs: 1.2 kB 1
solposx/n=100/SPA 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=100/USNO 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=100/Walraven 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=1000/Iqbal 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=1000/NOAA 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=1000/PSA 0.039 k allocs: 1.2 kB 0.039 k allocs: 1.2 kB 1
solposx/n=1000/SPA 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=1000/USNO 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=1000/Walraven 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=10000/Iqbal 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=10000/NOAA 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=10000/PSA 0.039 k allocs: 1.2 kB 0.039 k allocs: 1.2 kB 1
solposx/n=10000/SPA 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=10000/USNO 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=10000/Walraven 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=100000/Iqbal 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=100000/NOAA 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=100000/PSA 0.039 k allocs: 1.2 kB 0.039 k allocs: 1.2 kB 1
solposx/n=100000/SPA 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=100000/USNO 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=100000/Walraven 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
time_to_load 0.145 k allocs: 11 kB 0.145 k allocs: 11 kB 1

@github-actions

github-actions Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (Julia vpre)

Time benchmarks
main 5432526... main / 5432526...
ours/n=100/Interpolated 0.0269 ± 0.0003 ms 0.0269 ± 0.00033 ms 1 ± 0.017
ours/n=100/Iqbal 0.0131 ± 0.00011 ms 0.0129 ± 0.00011 ms 1.02 ± 0.012
ours/n=100/Michalsky 0.0327 ± 0.00024 ms 0.0325 ± 0.00023 ms 1.01 ± 0.01
ours/n=100/NOAA 0.0406 ± 0.00027 ms 0.0416 ± 0.00026 ms 0.975 ± 0.0089
ours/n=100/PSA 0.0172 ± 0.00011 ms 0.0172 ± 0.00012 ms 1 ± 0.0095
ours/n=100/SPA 0.459 ± 0.0088 ms 0.459 ± 0.0088 ms 1 ± 0.027
ours/n=100/USNO 0.0384 ± 0.00023 ms 0.0383 ± 0.00027 ms 1 ± 0.0093
ours/n=100/Walraven 0.0206 ± 0.00041 ms 0.0205 ± 0.00032 ms 1 ± 0.025
ours/n=1000/Interpolated 0.27 ± 0.0095 ms 0.27 ± 0.0096 ms 1 ± 0.05
ours/n=1000/Iqbal 0.135 ± 0.0079 ms 0.133 ± 0.0079 ms 1.02 ± 0.085
ours/n=1000/Michalsky 0.32 ± 0.009 ms 0.319 ± 0.0088 ms 1.01 ± 0.04
ours/n=1000/NOAA 0.399 ± 0.0089 ms 0.408 ± 0.009 ms 0.978 ± 0.031
ours/n=1000/PSA 0.173 ± 0.0081 ms 0.174 ± 0.008 ms 0.999 ± 0.066
ours/n=1000/SPA 4.68 ± 0.019 ms 4.66 ± 0.014 ms 1 ± 0.0051
ours/n=1000/USNO 0.379 ± 0.0098 ms 0.379 ± 0.0094 ms 0.999 ± 0.036
ours/n=1000/Walraven 0.208 ± 0.0079 ms 0.208 ± 0.0079 ms 1 ± 0.054
ours/n=10000/Interpolated 2.83 ± 0.015 ms 2.83 ± 0.015 ms 1 ± 0.0076
ours/n=10000/Iqbal 1.43 ± 0.012 ms 1.42 ± 0.012 ms 1.01 ± 0.012
ours/n=10000/Michalsky 3.3 ± 0.028 ms 3.28 ± 0.02 ms 1 ± 0.01
ours/n=10000/NOAA 4.05 ± 0.025 ms 4.14 ± 0.029 ms 0.977 ± 0.009
ours/n=10000/PSA 1.75 ± 0.0072 ms 1.75 ± 0.0091 ms 1 ± 0.0066
ours/n=10000/SPA 46.9 ± 0.32 ms 46.8 ± 0.38 ms 1 ± 0.011
ours/n=10000/USNO 3.83 ± 0.031 ms 3.82 ± 0.039 ms 1 ± 0.013
ours/n=10000/Walraven 2.08 ± 0.01 ms 2.08 ± 0.011 ms 1 ± 0.0072
ours/n=100000/Interpolated 28.6 ± 1.5 ms 28.5 ± 1.4 ms 1 ± 0.073
ours/n=100000/Iqbal 14.9 ± 0.59 ms 14.3 ± 0.66 ms 1.05 ± 0.064
ours/n=100000/Michalsky 33.3 ± 1.7 ms 33.2 ± 1.3 ms 1 ± 0.063
ours/n=100000/NOAA 41.7 ± 1.8 ms 42.6 ± 1.4 ms 0.979 ± 0.052
ours/n=100000/PSA 17.6 ± 0.97 ms 17.5 ± 0.66 ms 1 ± 0.067
ours/n=100000/SPA 480 ± 4.8 ms 474 ± 2.8 ms 1.01 ± 0.012
ours/n=100000/USNO 39.1 ± 1.1 ms 38.8 ± 0.74 ms 1.01 ± 0.035
ours/n=100000/Walraven 20.8 ± 1.1 ms 20.7 ± 0.65 ms 1 ± 0.06
refraction/ARCHER 0.000261 ± 1e-05 ms 0.000261 ± 1e-06 ms 1 ± 0.039
refraction/BENNETT 0.000261 ± 1e-05 ms 0.00028 ± 1e-05 ms 0.932 ± 0.049
refraction/MICHALSKY 0.00022 ± 1e-06 ms 0.00022 ± 1e-06 ms 1 ± 0.0064
refraction/NoRefraction 0.000211 ± 1e-05 ms 0.00025 ± 1e-06 ms 0.844 ± 0.04
refraction/SG2 0.00028 ± 1e-05 ms 0.000291 ± 1e-06 ms 0.962 ± 0.035
single/Interpolated 0.000431 ± 1e-06 ms 0.00043 ± 1e-05 ms 1 ± 0.023
single/Iqbal 0.000191 ± 1e-05 ms 0.00021 ± 1e-06 ms 0.91 ± 0.048
single/Michalsky 0.00035 ± 1e-05 ms 0.00035 ± 1e-05 ms 1 ± 0.04
single/NOAA 0.00045 ± 1e-05 ms 0.00045 ± 1e-05 ms 1 ± 0.031
single/PSA 0.00022 ± 1e-05 ms 0.00022 ± 1e-05 ms 1 ± 0.064
single/SPA 0.00424 ± 4e-05 ms 0.00421 ± 6e-05 ms 1.01 ± 0.017
single/USNO 0.00042 ± 1e-05 ms 0.000421 ± 1e-06 ms 0.998 ± 0.024
single/Walraven 0.00026 ± 1e-05 ms 0.00027 ± 1e-06 ms 0.963 ± 0.037
solposx/n=100/Iqbal 1.61 ± 0.029 ms 1.6 ± 0.028 ms 1.01 ± 0.025
solposx/n=100/NOAA 2.91 ± 0.044 ms 2.9 ± 0.039 ms 1.01 ± 0.02
solposx/n=100/PSA 2.03 ± 0.031 ms 2.01 ± 0.025 ms 1.01 ± 0.02
solposx/n=100/SPA 3.09 ± 0.084 ms 3.07 ± 0.061 ms 1.01 ± 0.034
solposx/n=100/USNO 2.41 ± 0.036 ms 2.4 ± 0.032 ms 1 ± 0.02
solposx/n=100/Walraven 0.84 ± 0.016 ms 0.834 ± 0.015 ms 1.01 ± 0.027
solposx/n=1000/Iqbal 1.86 ± 0.027 ms 1.86 ± 0.026 ms 1 ± 0.02
solposx/n=1000/NOAA 3.56 ± 0.051 ms 3.53 ± 0.04 ms 1.01 ± 0.018
solposx/n=1000/PSA 2.37 ± 0.029 ms 2.36 ± 0.032 ms 1 ± 0.019
solposx/n=1000/SPA 7.64 ± 0.11 ms 7.59 ± 0.084 ms 1.01 ± 0.018
solposx/n=1000/USNO 6.53 ± 0.083 ms 6.59 ± 0.085 ms 0.991 ± 0.018
solposx/n=1000/Walraven 1.13 ± 0.025 ms 1.13 ± 0.029 ms 1 ± 0.034
solposx/n=10000/Iqbal 4.6 ± 0.044 ms 4.63 ± 0.07 ms 0.994 ± 0.018
solposx/n=10000/NOAA 9.65 ± 0.17 ms 9.56 ± 0.13 ms 1.01 ± 0.022
solposx/n=10000/PSA 5.71 ± 0.064 ms 5.76 ± 0.079 ms 0.992 ± 0.018
solposx/n=10000/SPA 49.1 ± 0.23 ms 49.1 ± 0.28 ms 1 ± 0.0075
solposx/n=10000/USNO 47.4 ± 0.69 ms 47.9 ± 0.64 ms 0.99 ± 0.02
solposx/n=10000/Walraven 3.75 ± 0.042 ms 3.74 ± 0.041 ms 1 ± 0.016
solposx/n=100000/Iqbal 31.8 ± 0.82 ms 31.7 ± 0.73 ms 1 ± 0.035
solposx/n=100000/NOAA 68.6 ± 0.26 ms 68.3 ± 0.32 ms 1 ± 0.0061
solposx/n=100000/PSA 39.2 ± 0.71 ms 39.4 ± 0.81 ms 0.994 ± 0.027
solposx/n=100000/SPA 471 ± 9.3 ms 471 ± 12 ms 1 ± 0.033
solposx/n=100000/USNO 464 ± 39 ms 466 ± 42 ms 0.995 ± 0.12
solposx/n=100000/Walraven 29.7 ± 0.42 ms 29.8 ± 0.77 ms 0.996 ± 0.029
time_to_load 0.074 ± 0.0014 s 0.0741 ± 0.00022 s 0.999 ± 0.019
Memory benchmarks
main 5432526... main / 5432526...
ours/n=100/Interpolated 10 allocs: 4.53 kB 10 allocs: 4.53 kB 1
ours/n=100/Iqbal 6 allocs: 2.72 kB 6 allocs: 2.72 kB 1
ours/n=100/Michalsky 10 allocs: 4.53 kB 10 allocs: 4.53 kB 1
ours/n=100/NOAA 10 allocs: 4.53 kB 10 allocs: 4.53 kB 1
ours/n=100/PSA 6 allocs: 2.72 kB 6 allocs: 2.72 kB 1
ours/n=100/SPA 10 allocs: 4.53 kB 10 allocs: 4.53 kB 1
ours/n=100/USNO 6 allocs: 2.72 kB 6 allocs: 2.72 kB 1
ours/n=100/Walraven 6 allocs: 2.72 kB 6 allocs: 2.72 kB 1
ours/n=1000/Interpolated 15 allocs: 0.0385 MB 15 allocs: 0.0385 MB 1
ours/n=1000/Iqbal 9 allocs: 23.6 kB 9 allocs: 23.6 kB 1
ours/n=1000/Michalsky 15 allocs: 0.0385 MB 15 allocs: 0.0385 MB 1
ours/n=1000/NOAA 15 allocs: 0.0385 MB 15 allocs: 0.0385 MB 1
ours/n=1000/PSA 9 allocs: 23.6 kB 9 allocs: 23.6 kB 1
ours/n=1000/SPA 15 allocs: 0.0385 MB 15 allocs: 0.0385 MB 1
ours/n=1000/USNO 9 allocs: 23.6 kB 9 allocs: 23.6 kB 1
ours/n=1000/Walraven 9 allocs: 23.6 kB 9 allocs: 23.6 kB 1
ours/n=10000/Interpolated 15 allocs: 0.382 MB 15 allocs: 0.382 MB 1
ours/n=10000/Iqbal 9 allocs: 0.229 MB 9 allocs: 0.229 MB 1
ours/n=10000/Michalsky 15 allocs: 0.382 MB 15 allocs: 0.382 MB 1
ours/n=10000/NOAA 15 allocs: 0.382 MB 15 allocs: 0.382 MB 1
ours/n=10000/PSA 9 allocs: 0.229 MB 9 allocs: 0.229 MB 1
ours/n=10000/SPA 15 allocs: 0.382 MB 15 allocs: 0.382 MB 1
ours/n=10000/USNO 9 allocs: 0.229 MB 9 allocs: 0.229 MB 1
ours/n=10000/Walraven 9 allocs: 0.229 MB 9 allocs: 0.229 MB 1
ours/n=100000/Interpolated 15 allocs: 3.82 MB 15 allocs: 3.82 MB 1
ours/n=100000/Iqbal 9 allocs: 2.29 MB 9 allocs: 2.29 MB 1
ours/n=100000/Michalsky 15 allocs: 3.82 MB 15 allocs: 3.82 MB 1
ours/n=100000/NOAA 15 allocs: 3.82 MB 15 allocs: 3.82 MB 1
ours/n=100000/PSA 9 allocs: 2.29 MB 9 allocs: 2.29 MB 1
ours/n=100000/SPA 15 allocs: 3.82 MB 15 allocs: 3.82 MB 1
ours/n=100000/USNO 9 allocs: 2.29 MB 9 allocs: 2.29 MB 1
ours/n=100000/Walraven 9 allocs: 2.29 MB 9 allocs: 2.29 MB 1
refraction/ARCHER 0 allocs: 0 B 0 allocs: 0 B
refraction/BENNETT 0 allocs: 0 B 0 allocs: 0 B
refraction/MICHALSKY 0 allocs: 0 B 0 allocs: 0 B
refraction/NoRefraction 0 allocs: 0 B 0 allocs: 0 B
refraction/SG2 0 allocs: 0 B 0 allocs: 0 B
single/Interpolated 0 allocs: 0 B 0 allocs: 0 B
single/Iqbal 0 allocs: 0 B 0 allocs: 0 B
single/Michalsky 0 allocs: 0 B 0 allocs: 0 B
single/NOAA 0 allocs: 0 B 0 allocs: 0 B
single/PSA 0 allocs: 0 B 0 allocs: 0 B
single/SPA 0 allocs: 0 B 0 allocs: 0 B
single/USNO 0 allocs: 0 B 0 allocs: 0 B
single/Walraven 0 allocs: 0 B 0 allocs: 0 B
solposx/n=100/Iqbal 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=100/NOAA 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=100/PSA 0.039 k allocs: 1.2 kB 0.039 k allocs: 1.2 kB 1
solposx/n=100/SPA 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=100/USNO 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=100/Walraven 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=1000/Iqbal 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=1000/NOAA 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=1000/PSA 0.039 k allocs: 1.2 kB 0.039 k allocs: 1.2 kB 1
solposx/n=1000/SPA 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=1000/USNO 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=1000/Walraven 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=10000/Iqbal 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=10000/NOAA 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=10000/PSA 0.039 k allocs: 1.2 kB 0.039 k allocs: 1.2 kB 1
solposx/n=10000/SPA 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=10000/USNO 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=10000/Walraven 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=100000/Iqbal 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=100000/NOAA 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=100000/PSA 0.039 k allocs: 1.2 kB 0.039 k allocs: 1.2 kB 1
solposx/n=100000/SPA 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=100000/USNO 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
solposx/n=100000/Walraven 10 allocs: 0.531 kB 10 allocs: 0.531 kB 1
time_to_load 0.205 k allocs: 11.9 kB 0.205 k allocs: 11.9 kB 1

Adds a worked example to the uncertainty guide that sweeps a horizontal
position uncertainty from a centimetre to a kilometre and plots the resulting
elevation and azimuth uncertainty against the accuracy the algorithms
themselves claim.

Propagation is linear to first order, at about 9.0e-6 degrees of elevation and
2.8e-5 degrees of azimuth per metre. Azimuth is the more sensitive of the two
and meets SPA's stated 0.0003 degrees at roughly 11 m of position error, where
elevation needs 33 m. Against PSA's 0.0083 degrees the margins are 300 m and
920 m, so for a PSA-class algorithm the coordinates are never the limiting
factor, while for SPA at the weaker end of a consumer fix the two are
comparable.

Reuses the Wong palette hues already used in the tracker figure, checked for
colourblind separation, with the curves directly labelled since the orange sits
below a 3:1 contrast ratio against the light background on its own.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NQ9zmXUHQtA5suiMB8UdA7
@codecov

codecov Bot commented Jul 31, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (f699a7a) to head (5432526).

Additional details and impacted files
@@            Coverage Diff            @@
##              main      #123   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files           21        21           
  Lines          764       764           
=========================================
  Hits           764       764           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@langestefan
langestefan merged commit c5feca0 into main Jul 31, 2026
19 checks passed
@langestefan
langestefan deleted the release/v0.5.0 branch July 31, 2026 16:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants