Skip to content

Changing defaults and calling sequences - #44

Merged
tobydriscoll merged 13 commits into
mainfrom
renaming-types
Sep 1, 2026
Merged

Changing defaults and calling sequences#44
tobydriscoll merged 13 commits into
mainfrom
renaming-types

Conversation

@tobydriscoll

Copy link
Copy Markdown
Member
  • Make the unit interval the default domain
  • Make TCF the default approximation method
  • Make no pole checking the default; use allow=:strict for old behavior
  • Method selection is the third positional argument, as an instance instead of as a type (better dispatch specialization)
  • Adopt IntervalSets to get the .. notation for an interval

tobydriscoll and others added 10 commits August 25, 2026 09:56
AirspeedVelocity runs the PR's benchmark script against the base
revision as well as the PR head, so the script cannot use syntax
introduced on this branch. Select the call form once at load time
from what the loaded package supports.

The deprecated `method=` keyword is not used as a common dialect
because its depwarn fires with force=true on every call, which would
skew the timings being compared.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Ratios above 1 mean this PR is slower than main.

main aee5db2... main / aee5db2...
approximate/aaa/abs_circle 0.0452 ± 0.0018 s 0.0455 ± 0.0016 s 0.994 ± 0.051
approximate/aaa/exp_interval 0.109 ± 0.021 ms 0.0982 ± 0.01 ms 1.11 ± 0.25
approximate/aaa/tanh_steep 1.46 ± 0.058 ms 1.45 ± 0.034 ms 1.01 ± 0.046
approximate/thiele/abs_circle 4.77 ± 0.039 ms 4.77 ± 0.041 ms 1 ± 0.012
approximate/thiele/exp_interval 0.0491 ± 0.0028 ms 0.0443 ± 0.0028 ms 1.11 ± 0.094
approximate/thiele/tanh_steep 0.151 ± 0.0069 ms 0.143 ± 0.0063 ms 1.05 ± 0.066
approximate_discrete/aaa/abs_shift 4.09 ± 0.15 ms 4.14 ± 0.079 ms 0.987 ± 0.04
approximate_discrete/aaa/sin_recip 1.39 ± 0.058 ms 1.39 ± 0.033 ms 1 ± 0.048
approximate_discrete/aaa/tanh_steep 12.1 ± 0.97 ms 12.4 ± 0.78 ms 0.977 ± 0.099
approximate_discrete/thiele/abs_shift 0.277 ± 0.031 ms 0.287 ± 0.022 ms 0.964 ± 0.13
approximate_discrete/thiele/sin_recip 0.144 ± 0.017 ms 0.153 ± 0.013 ms 0.939 ± 0.14
approximate_discrete/thiele/tanh_steep 0.946 ± 0.097 ms 0.959 ± 0.089 ms 0.987 ± 0.14
evaluate/bary_vector 0.146 ± 0.0077 ms 0.145 ± 0.0087 ms 1.01 ± 0.081
evaluate/thiele_vector 0.0897 ± 0.00084 ms 0.0895 ± 0.00048 ms 1 ± 0.011
poles/thiele 0.419 ± 0.014 ms 0.426 ± 0.015 ms 0.985 ± 0.046
time_to_load 1.31 ± 0.008 s 1.33 ± 0.017 s 0.984 ± 0.014

Benchmark Plots

Plots have been uploaded as an artifact to this workflow run
("Actions" -> this run -> "Artifacts" at the bottom).

The new max_degree=100 default caps the continuum Barycentric iteration
below what abs(x) needs: it stagnates naturally at degree 116, so the
default truncates it 16 degrees early and leaves only a 37x margin under
the test's atol=1e-10 -- enough to pass on macOS/arm and fail on
ubuntu-x64. Requesting max_degree=150 lets both cases converge, restoring
a 640x margin.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@codecov

codecov Bot commented Sep 1, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 70.74830% with 43 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/thiele.jl 52.63% 18 Missing ⚠️
src/approximation.jl 78.20% 17 Missing ⚠️
src/barycentric.jl 75.00% 7 Missing ⚠️
src/lawson.jl 0.00% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

tobydriscoll and others added 2 commits September 1, 2026 10:09
quitting_check returned an Int carrying three overloaded meanings, so a
run that exhausted its degree budget was indistinguishable from one that
stagnated -- the reason the abs(x) tolerance failure read as a mystery.
Four call sites also had to pass a fake max_iter=1 to reach the
"pick the best iterate" branch for failures unrelated to the budget.

Split the check into a (reason, best) tuple plus a callable
best_acceptable, and record the outcome in a ConvergenceStatus stored on
the approximation, reachable via status(r) and isconverged(r). The
fallback when no iterate has acceptable poles is now explicit rather than
relying on a loop falling through with n unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@tobydriscoll
tobydriscoll merged commit acb2cd3 into main Sep 1, 2026
5 of 6 checks passed
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