David P. Sanders
David P. Sanders
This "corrects" multi-dimensional Krawczyk to use the inverse of a real matrix instead of an interval matrix. This should not affect correctness but should significantly improve performance. cc @Kolaru
```jl julia> g(x) = x^3 + x^2 + 3x + im julia> roots(g, Complex(-5..5, -5..5)) promotion of types IntervalRootFinding.Compl{Interval{Float64}} and Complex{Int64} failed to change any arguments ```
Instead of converting to a problem in R^2.
``` julia> roots(x->24.109999999999996 - 70.33*x + 65.33*x^2 - 15.11*x^3 - 5.0*x^4 + 1.0*x^5, Complex(-10..10, -10..10), Krawczyk) ``` apparently hangs
This currently fails
e.g. for f(x) = (x-1)*x*(x+1) on (-Inf..Inf).
A great paper with very nice techniques that we should implement: Solving Polynomial Systems Using a Branch and Prune Approach, *SIAM J. Numer. Anal.*, **34**(2), 797–827, Pascal Van Hentenryck, David...
```jl julia> roots(x->x^2-2, -10..10, 1e-5) ERROR: MethodError: no method matching roots(::getfield(Main, Symbol("##19#20")), ::Interval{Float64}, ::Float64) ``` cc @Kolaru
We should not export `Contractor` from this package; it's more important to export it from `IntervalConstraintProgramming`. In the future this should be cleaned up (since `Contractor` in `ICP` is a...