public final static double calcSingleRoot(GeoFunction f, double left,
double right) {
BrentSolver rootFinder = new BrentSolver();
if (!f.isDefined()) {
return Double.NaN;
}
double root = Double.NaN;
Function fun = f.getFunction();
try {
root = rootFinder.solve(AlgoRootNewton.MAX_ITERATIONS, fun, left,
right);
} catch (Exception e) {
try {
double[] borders = RealRootUtil.getDefinedInterval(fun, left,
right);
root = rootFinder.solve(AlgoRootNewton.MAX_ITERATIONS, fun,
borders[0], borders[1]);
} catch (Exception ex) {
root = Double.NaN;
}
}
return root;
}