:- use_module(library(clpBNR)).
absolve
is intended solely to trim up the boundaries of what is essentially a single (non-point) solution to a problem. The strategy used is to work in from the edges of the interval ("nibbling away") at subdomains which are inconsistent until you cannot go farther, then reduce step size and resume nibbling. In this case, the the environment flag clpBNR_default_precision
is used to specify the number of step size reductions to apply; the initial step size is half the interval width.
absolve
can be used to further narrow intervals after solve
to "sharpen" the result; example:
?- X::real,{X**4-4*X**3+4*X**2-4*X+3==0},solve(X). X:: 1.000000... ; X:: 1.0000000... ; X:: 3.000000... ; X:: 3.000000... ; false. ?- X::real,{X**4-4*X**3+4*X**2-4*X+3==0},solve(X),absolve(X). X:: 1.00000000... ; X:: 3.00000000... ; false.