|
Bertini 2 d882924 (2026-10-06 19:56 UTC)
Numerical algebraic geometry library (C++ core)
|
Holds the program parameters with respect to Adaptive Multiple Precision. More...
#include <config.hpp>
Public Member Functions | |
| void | SetBoundsFrom (System const &sys) |
| Set the linear-solve error bound, the degree bound and the coefficient bound from a system. | |
| void | SetErrorBoundsFromDegreeAndCoefficient () |
| Set the two evaluation error bounds from the degree and coefficient bounds. | |
| void | SetAMPConfigFrom (System const &sys) |
| Set every system-derived AMP setting from a system: the degree, coefficient and linear-solve bounds, and the two evaluation error bounds derived from them. | |
| AdaptiveMultiplePrecisionConfig () | |
| Construct with default AMP bounds and safety digits. | |
| AdaptiveMultiplePrecisionConfig (System const &sys) | |
| Construct AMP settings derived from a system's bounds, where that is possible. | |
Public Attributes | |
| NumErrorT | coefficient_bound |
| User-defined bound on the sum of the abs vals of the coeffs for any polynomial in the system (for adaptive precision). | |
| NumErrorT | degree_bound |
| User-set bound on degrees of polynomials in the system - tricky to compute for factored polys, subfuncs, etc. (for adaptive precision). | |
| NumErrorT | linear_solve_error_bound |
| Bound on the growth in error from a linear solve. | |
| NumErrorT | jacobian_eval_error_bound |
Bound on the error of evaluating the Jacobian, divided by the unit roundoff error . | |
| NumErrorT | function_eval_error_bound |
| Bound on the error of evaluating the functions, divided by the unit roundoff error. | |
| int | safety_digits_1 = 1 |
| User-chosen setting for the number of safety digits used during Criteria A & B. | |
| int | safety_digits_2 = 1 |
| User-chosen setting for the number of safety digits used during Criterion C. | |
| unsigned int | maximum_precision = 300 |
| User-chosed setting for the maximum allowable precision. Paths will die if their precision is requested to be set higher than this threshold. | |
| unsigned | max_num_precision_decreases = 10 |
| The maximum number of times precision can be lowered during tracking of a segment of path. | |
Holds the program parameters with respect to Adaptive Multiple Precision.
These criteria are developed in [1], [2].
Let:
be the Jacobian matrix of the square system being solved.
is the latest Newton residual.
is the maximum number of Newton iterations to perform.
Criterion A: ![$ P > \sigma_1 + \log_{10} [ ||J^{-1}|| \epsilon (||J|| + \Phi) ] $](form_35.png)
Criterion B:
where ![$ D = \log_{10} [||J^{-1}||((2 + \epsilon)||J|| + \epsilon \Phi) | 1] $](form_37.png)
Criterion C:
|
inline |
Construct with default AMP bounds and safety digits.
The three error bounds are normally recomputed from the system before tracking (
), and the two evaluation bounds are derived from the default degree and coefficient bounds so the object is internally consistent. Leaving them uninitialized produced garbage (e.g. NaN) that broke value comparison and pickle round-tripping.
|
inlineexplicit |
Construct AMP settings derived from a system's bounds, where that is possible.
A system that is not polynomial has no degree bound, so there is nothing to derive from and the defaults are kept. This constructor is what a solver's automatic setup calls, and it must not refuse, or an analytic homotopy could not be handed a configuration the caller chose: the refusal would fire first, during construction. The defaults are internally consistent and are NOT a claim about such a system, so
|
inline |
Set every system-derived AMP setting from a system: the degree, coefficient and linear-solve bounds, and the two evaluation error bounds derived from them.
|
inline |
Set the linear-solve error bound, the degree bound and the coefficient bound from a system.
The linear-solve error bound is the square of the number of variables. Bound on degree is set from a call to System class. Let this be
.
|
inline |
Set the two evaluation error bounds from the degree and coefficient bounds.
The polynomial recipe from [AMP1:] with
the degree bound and
the coefficient bound, the Jacobian evaluation error is bounded by
and the function evaluation error by
. It applies only to polynomial systems, which is the only kind that has a
; a caller with an analytic system sets the two bounds directly instead.
| NumErrorT bertini::tracking::AdaptiveMultiplePrecisionConfig::coefficient_bound |
User-defined bound on the sum of the abs vals of the coeffs for any polynomial in the system (for adaptive precision).
| NumErrorT bertini::tracking::AdaptiveMultiplePrecisionConfig::degree_bound |
User-set bound on degrees of polynomials in the system - tricky to compute for factored polys, subfuncs, etc. (for adaptive precision).
| NumErrorT bertini::tracking::AdaptiveMultiplePrecisionConfig::function_eval_error_bound |
| NumErrorT bertini::tracking::AdaptiveMultiplePrecisionConfig::jacobian_eval_error_bound |
Bound on the error of evaluating the Jacobian, divided by the unit roundoff error
.
Used for AMP criteria A and B, where it is called
in [1] and [2].
For a polynomial system this is
in the degree and coefficient bounds below; that recipe is what SetErrorBoundsFromDegreeAndCoefficient applies. The quantity itself is more general than the recipe, which is why it is spelled out rather than named after a Greek letter: a caller with a system that has no degree can set this directly.
| NumErrorT bertini::tracking::AdaptiveMultiplePrecisionConfig::linear_solve_error_bound |
| unsigned bertini::tracking::AdaptiveMultiplePrecisionConfig::max_num_precision_decreases = 10 |
The maximum number of times precision can be lowered during tracking of a segment of path.
| unsigned int bertini::tracking::AdaptiveMultiplePrecisionConfig::maximum_precision = 300 |
User-chosed setting for the maximum allowable precision. Paths will die if their precision is requested to be set higher than this threshold.
| int bertini::tracking::AdaptiveMultiplePrecisionConfig::safety_digits_1 = 1 |
User-chosen setting for the number of safety digits used during Criteria A & B.
| int bertini::tracking::AdaptiveMultiplePrecisionConfig::safety_digits_2 = 1 |
User-chosen setting for the number of safety digits used during Criterion C.