Skip to content

Conversation

@nsajko
Copy link
Contributor

@nsajko nsajko commented Jan 5, 2026

Apply the double-angle sine formula:

sin(2 * x) = 2 * sin(x) * cos(x)

The idea is:

  • sin(x) and sin(2 * x) both appear as subexpressions within the same expression

  • computing sin(x) and cos(x) could conceivably be faster than computing directly sin(x) and sin(2 * x), because sin(::Float64) and cos(::Float64) use the same polynomials in their implementations

    • this relies on the compiler being smart enough

    • this perhaps also relies on luck regarding things like inlining heuristics

Checklist

  • I am following the contributing guidelines
  • Tests are passing
  • Lint workflow is passing
  • Docs were updated and workflow is passing

Apply the double-angle sine formula:

```
sin(2 * x) = 2 * sin(x) * cos(x)
```

The idea is:

* `sin(x)` and `sin(2 * x)` both appear as subexpressions within the
  same expression

* computing `sin(x)` and `cos(x)` could conceivably be faster than
  computing directly `sin(x)` and `sin(2 * x)`, because `sin(x)` and
  `cos(x)` use the same polynomials in their implementations

    * this relies on the compiler being smart enough

    * this perhaps also relies on luck regarding things like inlining
      heuristics
(sin_Ω, cos_Ω) = sincos(Ω)
λₑ = L + p7 * sin(g) + p8 * sin(2 * g) + p9 + p10 * sin_Ω # Eq. 6
(sin_g, cos_g) = sincos(g)
λₑ = L + p7 * sin_g + (p8 * 2) * (sin_g * cos_g) + p9 + p10 * sin_Ω # Eq. 6
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

might also make sense to factor out sin_g:

Suggested change
λₑ = L + p7 * sin_g + (p8 * 2) * (sin_g * cos_g) + p9 + p10 * sin_Ω # Eq. 6
λₑ = L + sin_g * (p7+ (p8 * 2) * cos_g) + p9 + p10 * sin_Ω # Eq. 6

@github-actions
Copy link

github-actions bot commented Jan 5, 2026

Benchmark Results (Julia vlts)

Time benchmarks
main 7f1ff2d... main / 7f1ff2d...
ours/n=100/NOAA 0.0421 ± 0.00034 ms 0.0421 ± 0.0003 ms 0.999 ± 0.011
ours/n=100/PSA 18.5 ± 1.7 μs 18.6 ± 1.7 μs 0.995 ± 0.13
ours/n=100/SPA 0.295 ± 0.0066 ms 0.296 ± 0.0072 ms 1 ± 0.033
ours/n=100/USNO 0.0398 ± 0.00021 ms 0.04 ± 0.00019 ms 0.995 ± 0.0071
ours/n=100/Walraven 19.1 ± 0.16 μs 19.1 ± 0.14 μs 1 ± 0.011
ours/n=1000/NOAA 0.41 ± 0.0075 ms 0.412 ± 0.0074 ms 0.996 ± 0.026
ours/n=1000/PSA 0.169 ± 0.00095 ms 0.17 ± 0.0011 ms 0.993 ± 0.0084
ours/n=1000/SPA 2.99 ± 0.0057 ms 3 ± 0.0046 ms 0.998 ± 0.0024
ours/n=1000/USNO 0.386 ± 0.0074 ms 0.387 ± 0.0073 ms 0.997 ± 0.027
ours/n=1000/Walraven 0.19 ± 0.0076 ms 0.19 ± 0.0075 ms 1 ± 0.056
ours/n=10000/NOAA 4.14 ± 0.0075 ms 4.16 ± 0.0084 ms 0.996 ± 0.0027
ours/n=10000/PSA 1.69 ± 0.0062 ms 1.69 ± 0.0064 ms 1 ± 0.0053
ours/n=10000/SPA 30.1 ± 0.18 ms 30.2 ± 0.17 ms 0.997 ± 0.008
ours/n=10000/USNO 3.89 ± 0.0062 ms 3.89 ± 0.0068 ms 1 ± 0.0024
ours/n=10000/Walraven 1.93 ± 0.0067 ms 1.92 ± 0.0053 ms 1 ± 0.0045
ours/n=100000/NOAA 0.0423 ± 8.4e-05 s 0.0424 ± 0.00011 s 0.998 ± 0.0032
ours/n=100000/PSA 17 ± 0.047 ms 17 ± 0.039 ms 1 ± 0.0036
ours/n=100000/SPA 0.303 ± 0.0015 s 0.303 ± 0.0017 s 0.999 ± 0.0075
ours/n=100000/USNO 0.0393 ± 8.6e-05 s 0.0393 ± 7.7e-05 s 0.999 ± 0.0029
ours/n=100000/Walraven 19.4 ± 0.098 ms 19.4 ± 0.042 ms 1 ± 0.0055
refraction/ARCHER 0.24 ± 0.01 μs 0.23 ± 0.001 μs 1.04 ± 0.044
refraction/BENNETT 0.23 ± 0.001 μs 0.23 ± 0.01 μs 1 ± 0.044
refraction/MICHALSKY 0.2 ± 0.001 μs 0.191 ± 0.01 μs 1.05 ± 0.055
refraction/NoRefraction 0.2 ± 0.01 μs 0.19 ± 0.001 μs 1.05 ± 0.053
refraction/SG2 0.241 ± 0.01 μs 0.24 ± 0.001 μs 1 ± 0.042
single/NOAA 0.451 ± 0.01 μs 0.451 ± 0.01 μs 1 ± 0.031
single/PSA 0.2 ± 0.01 μs 0.19 ± 0.001 μs 1.05 ± 0.053
single/SPA 2.98 ± 0.011 μs 3.02 ± 0.011 μs 0.987 ± 0.0051
single/USNO 0.411 ± 0.01 μs 0.411 ± 0 μs 1 ± 0.024
single/Walraven 0.221 ± 0.01 μs 0.221 ± 0.01 μs 1 ± 0.064
solposx/n=100/NOAA 3.71 ± 0.059 ms 3.78 ± 0.063 ms 0.984 ± 0.023
solposx/n=100/PSA 2.7 ± 0.05 ms 2.71 ± 0.041 ms 0.997 ± 0.024
solposx/n=100/SPA 3.07 ± 0.061 ms 3.08 ± 0.03 ms 0.999 ± 0.022
solposx/n=100/USNO 2.87 ± 0.04 ms 2.91 ± 0.041 ms 0.987 ± 0.02
solposx/n=100/Walraven 1.09 ± 0.022 ms 1.1 ± 0.019 ms 0.985 ± 0.026
solposx/n=1000/NOAA 4.41 ± 0.095 ms 4.48 ± 0.071 ms 0.985 ± 0.026
solposx/n=1000/PSA 3.1 ± 0.052 ms 3.12 ± 0.049 ms 0.992 ± 0.023
solposx/n=1000/SPA 7.76 ± 0.21 ms 7.78 ± 0.32 ms 0.998 ± 0.049
solposx/n=1000/USNO 6.77 ± 0.26 ms 6.84 ± 0.25 ms 0.989 ± 0.052
solposx/n=1000/Walraven 1.39 ± 0.034 ms 1.41 ± 0.028 ms 0.986 ± 0.031
solposx/n=10000/NOAA 10.5 ± 0.19 ms 10.5 ± 0.23 ms 0.992 ± 0.028
solposx/n=10000/PSA 6.64 ± 0.12 ms 6.62 ± 0.12 ms 1 ± 0.026
solposx/n=10000/SPA 0.0509 ± 0.00053 s 0.0509 ± 0.00039 s 1 ± 0.013
solposx/n=10000/USNO 0.0456 ± 0.0016 s 0.0455 ± 0.0017 s 1 ± 0.053
solposx/n=10000/Walraven 4.02 ± 0.079 ms 4.05 ± 0.1 ms 0.991 ± 0.032
solposx/n=100000/NOAA 0.067 ± 0.00053 s 0.0682 ± 0.00062 s 0.983 ± 0.012
solposx/n=100000/PSA 0.0396 ± 0.00052 s 0.0396 ± 0.0006 s 1 ± 0.02
solposx/n=100000/SPA 0.495 ± 0.0037 s 0.498 ± 0.0017 s 0.995 ± 0.0082
solposx/n=100000/USNO 0.443 ± 0.016 s 0.443 ± 0.01 s 1 ± 0.042
solposx/n=100000/Walraven 29.6 ± 0.5 ms 29.6 ± 0.45 ms 0.999 ± 0.023
time_to_load 0.159 ± 0.0018 s 0.165 ± 0.0056 s 0.963 ± 0.034
Memory benchmarks
main 7f1ff2d... main / 7f1ff2d...
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/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/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/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/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/NOAA 25 allocs: 0.828 kB 25 allocs: 0.828 kB 1
solposx/n=100/PSA 0.06 k allocs: 1.66 kB 0.06 k allocs: 1.66 kB 1
solposx/n=100/SPA 25 allocs: 0.828 kB 25 allocs: 0.828 kB 1
solposx/n=100/USNO 25 allocs: 0.828 kB 25 allocs: 0.828 kB 1
solposx/n=100/Walraven 25 allocs: 0.828 kB 25 allocs: 0.828 kB 1
solposx/n=1000/NOAA 25 allocs: 0.828 kB 25 allocs: 0.828 kB 1
solposx/n=1000/PSA 0.06 k allocs: 1.66 kB 0.06 k allocs: 1.66 kB 1
solposx/n=1000/SPA 25 allocs: 0.828 kB 25 allocs: 0.828 kB 1
solposx/n=1000/USNO 25 allocs: 0.828 kB 25 allocs: 0.828 kB 1
solposx/n=1000/Walraven 25 allocs: 0.828 kB 25 allocs: 0.828 kB 1
solposx/n=10000/NOAA 25 allocs: 0.828 kB 25 allocs: 0.828 kB 1
solposx/n=10000/PSA 0.06 k allocs: 1.66 kB 0.06 k allocs: 1.66 kB 1
solposx/n=10000/SPA 25 allocs: 0.828 kB 25 allocs: 0.828 kB 1
solposx/n=10000/USNO 25 allocs: 0.828 kB 25 allocs: 0.828 kB 1
solposx/n=10000/Walraven 25 allocs: 0.828 kB 25 allocs: 0.828 kB 1
solposx/n=100000/NOAA 25 allocs: 0.828 kB 25 allocs: 0.828 kB 1
solposx/n=100000/PSA 0.06 k allocs: 1.66 kB 0.06 k allocs: 1.66 kB 1
solposx/n=100000/SPA 25 allocs: 0.828 kB 25 allocs: 0.828 kB 1
solposx/n=100000/USNO 25 allocs: 0.828 kB 25 allocs: 0.828 kB 1
solposx/n=100000/Walraven 25 allocs: 0.828 kB 25 allocs: 0.828 kB 1
time_to_load 0.153 k allocs: 14.5 kB 0.153 k allocs: 14.5 kB 1

@github-actions
Copy link

github-actions bot commented Jan 5, 2026

Benchmark Results (Julia vpre)

Time benchmarks
main 7f1ff2d... main / 7f1ff2d...
ours/n=100/NOAA 0.0417 ± 0.00024 ms 0.0423 ± 0.00024 ms 0.987 ± 0.008
ours/n=100/PSA 16.5 ± 0.15 μs 16.4 ± 0.18 μs 1.01 ± 0.014
ours/n=100/SPA 0.427 ± 0.0097 ms 0.43 ± 0.015 ms 0.994 ± 0.041
ours/n=100/USNO 0.0392 ± 0.00036 ms 0.0729 ± 0.0027 ms 0.537 ± 0.02
ours/n=100/Walraven 19.3 ± 0.5 μs 19.5 ± 0.49 μs 0.986 ± 0.036
ours/n=1000/NOAA 0.409 ± 0.0077 ms 0.413 ± 0.0075 ms 0.99 ± 0.026
ours/n=1000/PSA 0.164 ± 0.0015 ms 0.164 ± 0.001 ms 1 ± 0.011
ours/n=1000/SPA 4.37 ± 0.089 ms 4.45 ± 0.17 ms 0.983 ± 0.043
ours/n=1000/USNO 0.38 ± 0.0072 ms 0.708 ± 0.041 ms 0.537 ± 0.032
ours/n=1000/Walraven 0.193 ± 0.0014 ms 0.192 ± 0.0011 ms 1 ± 0.0092
ours/n=10000/NOAA 4.11 ± 0.012 ms 4.16 ± 0.012 ms 0.988 ± 0.0041
ours/n=10000/PSA 1.64 ± 0.0093 ms 1.61 ± 0.12 ms 1.02 ± 0.075
ours/n=10000/SPA 0.0449 ± 0.00082 s 0.0457 ± 0.00053 s 0.983 ± 0.021
ours/n=10000/USNO 3.85 ± 0.0062 ms 7.14 ± 0.03 ms 0.539 ± 0.0024
ours/n=10000/Walraven 1.94 ± 0.0061 ms 1.94 ± 0.0084 ms 0.999 ± 0.0054
ours/n=100000/NOAA 0.0421 ± 0.001 s 0.0428 ± 0.00029 s 0.985 ± 0.025
ours/n=100000/PSA 16.6 ± 0.29 ms 16.4 ± 0.29 ms 1.01 ± 0.025
ours/n=100000/SPA 0.454 ± 0.00054 s 0.463 ± 0.00058 s 0.981 ± 0.0017
ours/n=100000/USNO 0.0388 ± 0.00028 s 0.0713 ± 0.00027 s 0.545 ± 0.0045
ours/n=100000/Walraven 19.4 ± 0.3 ms 19.5 ± 0.31 ms 0.999 ± 0.022
refraction/ARCHER 0.23 ± 0.001 μs 0.23 ± 0.001 μs 1 ± 0.0061
refraction/BENNETT 0.231 ± 0.001 μs 0.23 ± 0.001 μs 1 ± 0.0062
refraction/MICHALSKY 0.191 ± 0.01 μs 0.19 ± 0.001 μs 1.01 ± 0.053
refraction/NoRefraction 0.191 ± 0.01 μs 0.19 ± 0.001 μs 1.01 ± 0.053
refraction/SG2 0.25 ± 0.001 μs 0.241 ± 0.01 μs 1.04 ± 0.043
single/NOAA 0.441 ± 0.01 μs 0.47 ± 0.01 μs 0.938 ± 0.029
single/PSA 0.191 ± 0.01 μs 0.19 ± 0.001 μs 1.01 ± 0.053
single/SPA 3.89 ± 0.05 μs 3.9 ± 0.02 μs 0.997 ± 0.014
single/USNO 0.411 ± 0.01 μs 0.411 ± 0.009 μs 1 ± 0.033
single/Walraven 0.23 ± 0.001 μs 0.231 ± 0.001 μs 0.996 ± 0.0061
solposx/n=100/NOAA 3.7 ± 0.057 ms 3.76 ± 0.044 ms 0.983 ± 0.019
solposx/n=100/PSA 2.63 ± 0.044 ms 2.69 ± 0.037 ms 0.978 ± 0.021
solposx/n=100/SPA 3.04 ± 0.017 ms 3.06 ± 0.023 ms 0.992 ± 0.0094
solposx/n=100/USNO 2.87 ± 0.034 ms 2.89 ± 0.032 ms 0.995 ± 0.016
solposx/n=100/Walraven 1.09 ± 0.015 ms 1.09 ± 0.016 ms 0.999 ± 0.02
solposx/n=1000/NOAA 4.41 ± 0.046 ms 4.45 ± 0.055 ms 0.991 ± 0.016
solposx/n=1000/PSA 3.04 ± 0.035 ms 3.11 ± 0.034 ms 0.978 ± 0.016
solposx/n=1000/SPA 7.56 ± 0.033 ms 7.61 ± 0.044 ms 0.993 ± 0.0073
solposx/n=1000/USNO 6.68 ± 0.17 ms 6.7 ± 0.18 ms 0.997 ± 0.036
solposx/n=1000/Walraven 1.38 ± 0.024 ms 1.39 ± 0.024 ms 0.991 ± 0.024
solposx/n=10000/NOAA 10.4 ± 0.14 ms 10.3 ± 0.19 ms 1.01 ± 0.023
solposx/n=10000/PSA 6.49 ± 0.079 ms 6.49 ± 0.084 ms 1 ± 0.018
solposx/n=10000/SPA 0.0502 ± 0.00021 s 0.0501 ± 0.00023 s 1 ± 0.0062
solposx/n=10000/USNO 0.045 ± 0.0017 s 0.0447 ± 0.0015 s 1.01 ± 0.051
solposx/n=10000/Walraven 3.97 ± 0.11 ms 3.98 ± 0.024 ms 0.998 ± 0.029
solposx/n=100000/NOAA 0.0675 ± 0.00049 s 0.0659 ± 0.00026 s 1.02 ± 0.0085
solposx/n=100000/PSA 0.0387 ± 0.00047 s 0.0388 ± 0.0002 s 0.999 ± 0.013
solposx/n=100000/SPA 0.501 ± 0.0037 s 0.488 ± 0.00081 s 1.03 ± 0.0078
solposx/n=100000/USNO 0.435 ± 0.014 s 0.432 ± 0.0082 s 1.01 ± 0.037
solposx/n=100000/Walraven 29 ± 0.2 ms 28.9 ± 0.29 ms 1.01 ± 0.012
time_to_load 0.119 ± 0.0011 s 0.119 ± 0.00032 s 1 ± 0.0095
Memory benchmarks
main 7f1ff2d... main / 7f1ff2d...
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/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/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/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/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/NOAA 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=100/PSA 0.037 k allocs: 1.17 kB 0.037 k allocs: 1.17 kB 1
solposx/n=100/SPA 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=100/USNO 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=100/Walraven 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=1000/NOAA 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=1000/PSA 0.037 k allocs: 1.17 kB 0.037 k allocs: 1.17 kB 1
solposx/n=1000/SPA 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=1000/USNO 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=1000/Walraven 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=10000/NOAA 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=10000/PSA 0.037 k allocs: 1.17 kB 0.037 k allocs: 1.17 kB 1
solposx/n=10000/SPA 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=10000/USNO 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=10000/Walraven 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=100000/NOAA 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=100000/PSA 0.037 k allocs: 1.17 kB 0.037 k allocs: 1.17 kB 1
solposx/n=100000/SPA 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=100000/USNO 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=100000/Walraven 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
time_to_load 0.217 k allocs: 13.5 kB 0.217 k allocs: 13.5 kB 1

@github-actions
Copy link

github-actions bot commented Jan 5, 2026

Benchmark Results (Julia v1)

Time benchmarks
main 7f1ff2d... main / 7f1ff2d...
ours/n=100/NOAA 0.0422 ± 0.00027 ms 0.0423 ± 0.00044 ms 0.997 ± 0.012
ours/n=100/PSA 16.6 ± 0.14 μs 16.6 ± 0.14 μs 0.998 ± 0.012
ours/n=100/SPA 0.309 ± 0.0073 ms 0.309 ± 0.0073 ms 1 ± 0.033
ours/n=100/USNO 0.0399 ± 0.00024 ms 0.0398 ± 0.00022 ms 1 ± 0.0082
ours/n=100/Walraven 19.5 ± 0.55 μs 19.5 ± 0.58 μs 1 ± 0.041
ours/n=1000/NOAA 0.413 ± 0.0078 ms 0.412 ± 0.0079 ms 1 ± 0.027
ours/n=1000/PSA 0.166 ± 0.0075 ms 0.166 ± 0.0075 ms 0.999 ± 0.064
ours/n=1000/SPA 3.17 ± 0.017 ms 3.17 ± 0.017 ms 1 ± 0.0077
ours/n=1000/USNO 0.386 ± 0.0078 ms 0.388 ± 0.0079 ms 0.995 ± 0.028
ours/n=1000/Walraven 0.195 ± 0.0084 ms 0.195 ± 0.0083 ms 1 ± 0.061
ours/n=10000/NOAA 4.15 ± 0.01 ms 4.15 ± 0.019 ms 1 ± 0.0052
ours/n=10000/PSA 1.66 ± 0.008 ms 1.65 ± 0.0082 ms 1 ± 0.007
ours/n=10000/SPA 0.0318 ± 8.8e-05 s 0.0318 ± 0.00011 s 1 ± 0.0043
ours/n=10000/USNO 3.91 ± 0.0087 ms 3.92 ± 0.015 ms 0.996 ± 0.0043
ours/n=10000/Walraven 1.97 ± 0.016 ms 1.97 ± 0.015 ms 1 ± 0.011
ours/n=100000/NOAA 0.0423 ± 0.00055 s 0.0423 ± 0.00062 s 1 ± 0.02
ours/n=100000/PSA 16.7 ± 0.43 ms 16.6 ± 0.45 ms 1 ± 0.038
ours/n=100000/SPA 0.32 ± 0.0012 s 0.319 ± 0.0018 s 1 ± 0.0068
ours/n=100000/USNO 0.0394 ± 0.00031 s 0.0394 ± 0.00024 s 0.999 ± 0.01
ours/n=100000/Walraven 19.8 ± 0.51 ms 19.8 ± 0.55 ms 1 ± 0.038
refraction/ARCHER 0.231 ± 0.01 μs 0.231 ± 0.001 μs 1 ± 0.044
refraction/BENNETT 0.23 ± 0.001 μs 0.231 ± 0.001 μs 0.996 ± 0.0061
refraction/MICHALSKY 0.2 ± 0.01 μs 0.191 ± 0.01 μs 1.05 ± 0.076
refraction/NoRefraction 0.191 ± 0.01 μs 0.19 ± 0.001 μs 1.01 ± 0.053
refraction/SG2 0.241 ± 0.01 μs 0.241 ± 0.01 μs 1 ± 0.059
single/NOAA 0.451 ± 0.01 μs 0.451 ± 0.001 μs 1 ± 0.022
single/PSA 0.191 ± 0.001 μs 0.19 ± 0.001 μs 1.01 ± 0.0075
single/SPA 3.12 ± 0.02 μs 3.14 ± 0.01 μs 0.994 ± 0.0071
single/USNO 0.421 ± 0.001 μs 0.42 ± 0.01 μs 1 ± 0.024
single/Walraven 0.231 ± 0.01 μs 0.23 ± 0.001 μs 1 ± 0.044
solposx/n=100/NOAA 3.68 ± 0.058 ms 3.72 ± 0.052 ms 0.989 ± 0.021
solposx/n=100/PSA 2.66 ± 0.048 ms 2.66 ± 0.041 ms 1 ± 0.024
solposx/n=100/SPA 3.02 ± 0.04 ms 3.04 ± 0.03 ms 0.994 ± 0.016
solposx/n=100/USNO 2.86 ± 0.036 ms 2.87 ± 0.038 ms 0.997 ± 0.018
solposx/n=100/Walraven 1.11 ± 0.025 ms 1.08 ± 0.019 ms 1.02 ± 0.029
solposx/n=1000/NOAA 4.49 ± 0.061 ms 4.4 ± 0.055 ms 1.02 ± 0.019
solposx/n=1000/PSA 3.14 ± 0.046 ms 3.06 ± 0.041 ms 1.03 ± 0.02
solposx/n=1000/SPA 7.46 ± 0.049 ms 7.48 ± 0.042 ms 0.998 ± 0.0086
solposx/n=1000/USNO 6.78 ± 0.21 ms 6.65 ± 0.22 ms 1.02 ± 0.046
solposx/n=1000/Walraven 1.4 ± 0.028 ms 1.38 ± 0.028 ms 1.02 ± 0.029
solposx/n=10000/NOAA 10.4 ± 0.15 ms 10.4 ± 0.15 ms 1 ± 0.02
solposx/n=10000/PSA 6.51 ± 0.096 ms 6.5 ± 0.11 ms 1 ± 0.022
solposx/n=10000/SPA 0.0504 ± 0.0002 s 0.0506 ± 0.00022 s 0.996 ± 0.0059
solposx/n=10000/USNO 0.0448 ± 0.0018 s 0.044 ± 0.0018 s 1.02 ± 0.058
solposx/n=10000/Walraven 3.96 ± 0.044 ms 3.99 ± 0.043 ms 0.993 ± 0.015
solposx/n=100000/NOAA 0.0682 ± 0.00065 s 0.0677 ± 0.00061 s 1.01 ± 0.013
solposx/n=100000/PSA 0.0395 ± 0.00057 s 0.0396 ± 0.00057 s 0.996 ± 0.02
solposx/n=100000/SPA 0.487 ± 0.0077 s 0.485 ± 0.003 s 1 ± 0.017
solposx/n=100000/USNO 0.439 ± 0.014 s 0.432 ± 0.0043 s 1.02 ± 0.034
solposx/n=100000/Walraven 29.4 ± 0.46 ms 29.6 ± 0.36 ms 0.993 ± 0.02
time_to_load 0.172 ± 0.0005 s 0.173 ± 0.0034 s 0.994 ± 0.02
Memory benchmarks
main 7f1ff2d... main / 7f1ff2d...
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/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/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/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/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/NOAA 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=100/PSA 0.037 k allocs: 1.17 kB 0.037 k allocs: 1.17 kB 1
solposx/n=100/SPA 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=100/USNO 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=100/Walraven 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=1000/NOAA 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=1000/PSA 0.037 k allocs: 1.17 kB 0.037 k allocs: 1.17 kB 1
solposx/n=1000/SPA 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=1000/USNO 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=1000/Walraven 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=10000/NOAA 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=10000/PSA 0.037 k allocs: 1.17 kB 0.037 k allocs: 1.17 kB 1
solposx/n=10000/SPA 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=10000/USNO 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=10000/Walraven 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=100000/NOAA 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=100000/PSA 0.037 k allocs: 1.17 kB 0.037 k allocs: 1.17 kB 1
solposx/n=100000/SPA 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=100000/USNO 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
solposx/n=100000/Walraven 9 allocs: 0.516 kB 9 allocs: 0.516 kB 1
time_to_load 0.145 k allocs: 11 kB 0.145 k allocs: 11 kB 1

@codecov
Copy link

codecov bot commented Jan 5, 2026

Codecov Report

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

Additional details and impacted files
@@            Coverage Diff            @@
##              main       #61   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files           17        17           
  Lines          678       679    +1     
=========================================
+ Hits           678       679    +1     

☔ View full report in Codecov by Sentry.
📢 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.

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.

1 participant