|
Bertini 2 d882924 (2026-10-06 19:56 UTC)
Numerical algebraic geometry library (C++ core)
|
Per-solution metadata gathered during and after a path track. More...
#include <zero_dim_solve.hpp>
Public Types | |
| using | SolnIndT = typename SolnCont<ComplexT>::size_type |
| Index type for solutions/paths. | |
Public Member Functions | |
| bool | operator== (const SolutionMetaData< ComplexT > &other) |
| Equality comparison over the identity fields (path_time_seconds is excluded). | |
Public Attributes | |
| SolnIndT | path_index |
| Path number of the solution. | |
| SolnIndT | solution_index |
| Solution number. | |
| bool | precision_changed = false |
| Whether the working precision changed during the path. | |
| ComplexT | time_of_first_prec_increase |
| Time value of the first increase in precision. | |
| decltype(DefaultPrecision()) | max_precision_used = 0 |
| Highest precision (digits) used anywhere on the path, for every kind of tracker; a fixed-precision tracker reports its one precision. | |
| double | path_time_seconds = 0.0 |
| Wall-clock time for the whole path (pre-endgame + endgame), seconds. Not an identity field (excluded from operator==). | |
| unsigned | num_successful_steps = 0 |
| Predictor-corrector steps that succeeded on this path, pre-endgame and endgame together. | |
| unsigned | num_failed_steps = 0 |
| Predictor-corrector steps that failed and were retried smaller on this path, pre-endgame and endgame together. | |
| double | wall_clock_limit_seconds = 0 |
| The per-path wall-clock budget in force when this path ran (ZeroDimConfig::max_path_wall_clock_duration), seconds; 0 = none. | |
| Vec< ComplexT > | latest_path_point |
| Where the tracker was when it gave up: the last point reached, in the tracker's internal coordinates, on a path that did NOT succeed – whether it failed, was stopped, or ran out of budget, in either stage. | |
| SuccessCode | pre_endgame_success_code = SuccessCode::NeverStarted |
| Success code of the pre-endgame track. | |
| NumErrorT | condition_number |
| Spectral-norm condition number of the target system's Jacobian at the endpoint (the quantity condition_number_threshold is specified against). | |
| Vec< NumErrorT > | singular_values |
| The singular values of the (homogenized, patched) target system's Jacobian at the endpoint, largest first, at the endpoint's own precision – condition_number is the ratio of the first to the last. | |
| NumErrorT | newton_residual |
| The latest Newton residual. | |
| ComplexT | final_time_used |
| The last time value the path reached: the endgame's latest time for a successful path, the tracker's time when it stopped for one that did not succeed in either stage. | |
| NumErrorT | accuracy_estimate_internal_coords |
| Distance between the endgame's last two approximations, in the solver's internal coordinates (homogenized, on the patch). The quantity the convergence test compares with final_tolerance; it does not grow with the scale of the solution. | |
| NumErrorT | accuracy_estimate_user_coords |
| Distance between the endgame's last two approximations after each is dehomogenized: the absolute error in the units of the user's variables. | |
| unsigned | cycle_num |
| Cycle number used in extrapolations. | |
| unsigned | precision_digits = 0 |
| Working precision (digits) the endgame finished this solution in. | |
| unsigned | accuracy_digits = 0 |
| Trustworthy digit count, from the convergence agreement. | |
| SuccessCode | endgame_success_code = SuccessCode::NeverStarted |
| Success code of the endgame. | |
| NumErrorT | function_residual |
| The latest function residual. | |
| int | multiplicity = 1 |
| Multiplicity of the solution. | |
| bool | multiplicity_representative = true |
| Whether this is the chosen single representative of its multiplicity cluster (the m copies share one point; exactly one is the representative). | |
| bool | is_real = false |
| Whether the (dehomogenized) endpoint is real. | |
| bool | is_finite = false |
| Whether the endpoint is finite (not at infinity). | |
| bool | is_singular = false |
| Whether the endpoint is singular (multiple, or ill-conditioned). | |
| bool | crossing_unresolved = false |
| Whether this path was flagged as crossing another at the endgame boundary and the crossing was NOT resolved by re-tracking. | |
| bool | is_nonsolution = false |
| Whether this finite, successful endpoint is not a solution of the actual target system (an extraneous root from squaring up an over-determined system). | |
Per-solution metadata gathered during and after a path track.
| using bertini::algorithm::SolutionMetaData< ComplexT >::SolnIndT = typename SolnCont<ComplexT>::size_type |
Index type for solutions/paths.
|
inline |
Equality comparison over the identity fields (path_time_seconds is excluded).
| unsigned bertini::algorithm::SolutionMetaData< ComplexT >::accuracy_digits = 0 |
Trustworthy digit count, from the convergence agreement.
| NumErrorT bertini::algorithm::SolutionMetaData< ComplexT >::accuracy_estimate_internal_coords |
Distance between the endgame's last two approximations, in the solver's internal coordinates (homogenized, on the patch). The quantity the convergence test compares with final_tolerance; it does not grow with the scale of the solution.
| NumErrorT bertini::algorithm::SolutionMetaData< ComplexT >::accuracy_estimate_user_coords |
Distance between the endgame's last two approximations after each is dehomogenized: the absolute error in the units of the user's variables.
| NumErrorT bertini::algorithm::SolutionMetaData< ComplexT >::condition_number |
Spectral-norm condition number of the target system's Jacobian at the endpoint (the quantity condition_number_threshold is specified against).
| bool bertini::algorithm::SolutionMetaData< ComplexT >::crossing_unresolved = false |
Whether this path was flagged as crossing another at the endgame boundary and the crossing was NOT resolved by re-tracking.
Its success codes may still read Success, but the library has already warned that this endpoint may be wrong; consumers that build on the endpoint should check this flag, not just the codes (b2#365).
| unsigned bertini::algorithm::SolutionMetaData< ComplexT >::cycle_num |
Cycle number used in extrapolations.
| SuccessCode bertini::algorithm::SolutionMetaData< ComplexT >::endgame_success_code = SuccessCode::NeverStarted |
Success code of the endgame.
| ComplexT bertini::algorithm::SolutionMetaData< ComplexT >::final_time_used |
The last time value the path reached: the endgame's latest time for a successful path, the tracker's time when it stopped for one that did not succeed in either stage.
| NumErrorT bertini::algorithm::SolutionMetaData< ComplexT >::function_residual |
The latest function residual.
| bool bertini::algorithm::SolutionMetaData< ComplexT >::is_finite = false |
Whether the endpoint is finite (not at infinity).
| bool bertini::algorithm::SolutionMetaData< ComplexT >::is_nonsolution = false |
Whether this finite, successful endpoint is not a solution of the actual target system (an extraneous root from squaring up an over-determined system).
| bool bertini::algorithm::SolutionMetaData< ComplexT >::is_real = false |
Whether the (dehomogenized) endpoint is real.
| bool bertini::algorithm::SolutionMetaData< ComplexT >::is_singular = false |
Whether the endpoint is singular (multiple, or ill-conditioned).
| Vec<ComplexT> bertini::algorithm::SolutionMetaData< ComplexT >::latest_path_point |
Where the tracker was when it gave up: the last point reached, in the tracker's internal coordinates, on a path that did NOT succeed – whether it failed, was stopped, or ran out of budget, in either stage.
Read with final_time_used, which holds the matching time. Empty for a successful path (its endpoint is the solution itself) and for a path never started. On a Cauchy endgame the point may lie on a sample circle rather than on the real segment to the target.
| decltype(DefaultPrecision()) bertini::algorithm::SolutionMetaData< ComplexT >::max_precision_used = 0 |
Highest precision (digits) used anywhere on the path, for every kind of tracker; a fixed-precision tracker reports its one precision.
| int bertini::algorithm::SolutionMetaData< ComplexT >::multiplicity = 1 |
Multiplicity of the solution.
| bool bertini::algorithm::SolutionMetaData< ComplexT >::multiplicity_representative = true |
Whether this is the chosen single representative of its multiplicity cluster (the m copies share one point; exactly one is the representative).
| NumErrorT bertini::algorithm::SolutionMetaData< ComplexT >::newton_residual |
The latest Newton residual.
| unsigned bertini::algorithm::SolutionMetaData< ComplexT >::num_failed_steps = 0 |
Predictor-corrector steps that failed and were retried smaller on this path, pre-endgame and endgame together.
| unsigned bertini::algorithm::SolutionMetaData< ComplexT >::num_successful_steps = 0 |
Predictor-corrector steps that succeeded on this path, pre-endgame and endgame together.
| SolnIndT bertini::algorithm::SolutionMetaData< ComplexT >::path_index |
Path number of the solution.
| double bertini::algorithm::SolutionMetaData< ComplexT >::path_time_seconds = 0.0 |
Wall-clock time for the whole path (pre-endgame + endgame), seconds. Not an identity field (excluded from operator==).
| SuccessCode bertini::algorithm::SolutionMetaData< ComplexT >::pre_endgame_success_code = SuccessCode::NeverStarted |
Success code of the pre-endgame track.
| bool bertini::algorithm::SolutionMetaData< ComplexT >::precision_changed = false |
Whether the working precision changed during the path.
| unsigned bertini::algorithm::SolutionMetaData< ComplexT >::precision_digits = 0 |
Working precision (digits) the endgame finished this solution in.
| Vec<NumErrorT> bertini::algorithm::SolutionMetaData< ComplexT >::singular_values |
The singular values of the (homogenized, patched) target system's Jacobian at the endpoint, largest first, at the endpoint's own precision – condition_number is the ratio of the first to the last.
Published raw so a caller can read a numerical rank at a tolerance of ITS choosing: no single tolerance is right for every endpoint, and a rank verdict baked in here would misjudge someone's regular root (b2#409). Empty when the endgame did not succeed.
| SolnIndT bertini::algorithm::SolutionMetaData< ComplexT >::solution_index |
Solution number.
| ComplexT bertini::algorithm::SolutionMetaData< ComplexT >::time_of_first_prec_increase |
Time value of the first increase in precision.
| double bertini::algorithm::SolutionMetaData< ComplexT >::wall_clock_limit_seconds = 0 |
The per-path wall-clock budget in force when this path ran (ZeroDimConfig::max_path_wall_clock_duration), seconds; 0 = none.
Recorded with the path so a later run can tell whether it is asking more patience of an abandoned path than the run that abandoned it.