-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Supporting more recent IntervalArithmetic versions #181
Comments
Oh? How? IA v0.22 was breaking lots of packages. I do not know about
Both IO and AA are optional (and you forgot |
David made an |
That is good news. |
Yes, I meant using IntervalBoxes.jl if needed – that is, if IntervalArithmetic.jl support for Vector{Interval} is not enough (https://github.com/JuliaIntervals/IntervalArithmetic.jl/blob/0bb1d9bec5e46b14b9efe121af62f41e24b044a9/NEWS.md?plain=1#L19).
That was my point: we cannot run tests here with the new IA.jl version as of now, unfortunately. So, if keeping those packages support, RangeEnclosures cannot really upgrade to new IA.jl with fixed bugs. |
Creating a separate package does not sound like a good solution I think. The whole idea of RangeEnclosures having AA and IO as optional dependencies is to make the package itself light. The problem here is not in the package but in loading the optional dependencies when testing. We could think about some tricks in the testing infrastructure, e.g. run the tests with optional dependencies on a separate job with a different environment. |
Anyway, turns out I don't need the full RangeEnclosure. Went forward with pasting a short function (adapted from here) into my code: import IntervalArithmetic as IA
function enclose(f, X; maxdepth, atol, rtol)
fX = f(X)
if maxdepth == 0 || IA.diam(fX) <= max(atol, rtol * IA.mig(fX))
return fX
else
Xs = IA.bisect(X)
Y = mapreduce(IA.hull, Xs) do Xi
enclose(f, Xi; maxdepth=maxdepth-1, atol, rtol)
end
end
end |
Reading through this issue, I figured I can provide some pointers. First let me say that the next 1.0 release of IntervalArithmetic will be essentially v0.22, and breaking changes will be kept to a minimal. I think the most disruptive changes in v0.22 are:
|
Currently, RangeEnclosures are only compatible with IntervalArithmetic 0.21.0 and below. There are bugs present in that version but fixed later, for example
0. * interval(0.9, 1.1)
being equal tointerval(0.9, 1.1)
.Project.toml says (
RangeEnclosures.jl/Project.toml
Line 13 in 1e6b5a8
But tests also depend on IntervalOptimization and AffineArithmetic, and those packages don't support recent IntervalArithmetic versions. And they haven't really been update for a long time, maybe obsolete?
What do you think we should do here to allow usage of RangeEnclosures with more recent (presumably less buggy) version of IA? If IO and AA are obsolete, maybe remove them?..
The text was updated successfully, but these errors were encountered: