Skip to content

Infer root type from the provided function#239

Merged
Kolaru merged 3 commits into
JuliaIntervals:masterfrom
Kolaru:graceful_vector_types
Apr 20, 2026
Merged

Infer root type from the provided function#239
Kolaru merged 3 commits into
JuliaIntervals:masterfrom
Kolaru:graceful_vector_types

Conversation

@Kolaru

@Kolaru Kolaru commented Apr 19, 2026

Copy link
Copy Markdown
Member

This PR changes how the internal root type is determine:

Now it uses the return type of the function, regardless of the type of the initial region given. This should avoid unnecessary conversions.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

master 80dd3e1... master / 80dd3e1...
Dietmar-Ratz/Dietmar-Ratz 1/IntervalRootFinding.Krawczyk 2.11 ± 0.04 μs 0.269 ± 0.029 ms 0.00786 ± 0.00086
Dietmar-Ratz/Dietmar-Ratz 1/IntervalRootFinding.Newton 2.09 ± 0.05 μs 0.273 ± 0.033 ms 0.00766 ± 0.00094
Dietmar-Ratz/Dietmar-Ratz 2/IntervalRootFinding.Krawczyk 0.0989 ± 0.00066 ms 2.87 ± 0.049 ms 0.0345 ± 0.00063
Dietmar-Ratz/Dietmar-Ratz 2/IntervalRootFinding.Newton 0.234 ± 0.0099 ms 3.11 ± 0.069 ms 0.0754 ± 0.0036
Dietmar-Ratz/Dietmar-Ratz 3/IntervalRootFinding.Krawczyk 0.328 ± 0.011 ms 1.85 ± 0.073 ms 0.177 ± 0.0093
Dietmar-Ratz/Dietmar-Ratz 3/IntervalRootFinding.Newton 0.244 ± 0.011 ms 1.78 ± 0.072 ms 0.137 ± 0.0084
Dietmar-Ratz/Dietmar-Ratz 4/IntervalRootFinding.Krawczyk 0.0472 ± 0.00046 ms 3 ± 0.059 ms 0.0158 ± 0.00034
Dietmar-Ratz/Dietmar-Ratz 4/IntervalRootFinding.Newton 30.3 ± 0.38 μs 3 ± 0.068 ms 0.0101 ± 0.00026
Dietmar-Ratz/Dietmar-Ratz 5/IntervalRootFinding.Krawczyk 1.92 ± 0.05 μs 0.104 ± 0.019 ms 0.0186 ± 0.0035
Dietmar-Ratz/Dietmar-Ratz 5/IntervalRootFinding.Newton 1.94 ± 0.051 μs 0.104 ± 0.019 ms 0.0187 ± 0.0034
Dietmar-Ratz/Dietmar-Ratz 6/IntervalRootFinding.Krawczyk 11.6 ± 0.16 μs 2.99 ± 0.075 ms 0.00388 ± 0.00011
Dietmar-Ratz/Dietmar-Ratz 6/IntervalRootFinding.Newton 18.2 ± 0.22 μs 3 ± 0.076 ms 0.00609 ± 0.00017
Dietmar-Ratz/Dietmar-Ratz 7/IntervalRootFinding.Krawczyk 2.17 ± 0.051 μs 2.3 ± 0.31 ms 0.000947 ± 0.00013
Dietmar-Ratz/Dietmar-Ratz 7/IntervalRootFinding.Newton 2.21 ± 0.06 μs 2.3 ± 0.25 ms 0.000961 ± 0.00011
Dietmar-Ratz/Dietmar-Ratz 9/IntervalRootFinding.Krawczyk 2.43 ± 0.06 μs 0.095 ± 0.019 ms 0.0255 ± 0.005
Dietmar-Ratz/Dietmar-Ratz 9/IntervalRootFinding.Newton 2.46 ± 0.06 μs 0.0952 ± 0.017 ms 0.0258 ± 0.0047
Rastigrin stationary points/IntervalRootFinding.Krawczyk 0.148 ± 0.0011 s 0.168 ± 0.0014 s 0.884 ± 0.0097
Rastigrin stationary points/IntervalRootFinding.Newton 0.141 ± 0.0014 s 0.157 ± 0.0061 s 0.894 ± 0.036
Smiley/Smiley and Chun (2001), Example 2.2/IntervalRootFinding.Krawczyk 4.34 ± 0.063 ms 7.27 ± 1.1 ms 0.597 ± 0.089
Smiley/Smiley and Chun (2001), Example 2.2/IntervalRootFinding.Newton 3.84 ± 0.061 ms 6.66 ± 1 ms 0.577 ± 0.087
Smiley/Smiley and Chun (2001), Example 5.2/IntervalRootFinding.Krawczyk 0.0492 ± 0.0031 s 0.0569 ± 0.0079 s 0.864 ± 0.13
Smiley/Smiley and Chun (2001), Example 5.2/IntervalRootFinding.Newton 0.0441 ± 0.0029 s 0.0488 ± 0.0058 s 0.904 ± 0.12
Smiley/Smiley and Chun (2001), Example 5.4/IntervalRootFinding.Krawczyk 2.62 ± 0.039 ms 8.31 ± 1.1 ms 0.316 ± 0.042
Smiley/Smiley and Chun (2001), Example 5.4/IntervalRootFinding.Newton 2.98 ± 0.039 ms 8.58 ± 1.1 ms 0.347 ± 0.045
time_to_load 0.322 ± 0.005 s 0.399 ± 0.0016 s 0.807 ± 0.013

Benchmark Plots

A plot of the benchmark results have been uploaded as an artifact to the workflow run for this PR.
Go to "Actions"->"Benchmark a pull request"->[the most recent run]->"Artifacts" (at the bottom).

@Kolaru

Kolaru commented Apr 20, 2026

Copy link
Copy Markdown
Member Author

Benchmarks are slower due to the inference only, and fail because I had to change them for the future.

A longer benchmark (few seconds to a minute) would be nice to be less sensitive to that kind of short setup effects (see #142 ).

@Kolaru Kolaru merged commit 843e1c2 into JuliaIntervals:master Apr 20, 2026
9 of 10 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