Bertini 2 d882924 (2026-10-06 19:56 UTC)
Numerical algebraic geometry library (C++ core)
Loading...
Searching...
No Matches
bertini::algorithm::ZeroDimSolver< TrackerType, EndgameType, SystemType > Struct Template Reference

The zero-dimensional solve algorithm: given a polynomial system, form a start system and a homotopy, then run the continuation engine. More...

#include <zero_dim_solve.hpp>

Inheritance diagram for bertini::algorithm::ZeroDimSolver< TrackerType, EndgameType, SystemType >:
[legend]
Collaboration diagram for bertini::algorithm::ZeroDimSolver< TrackerType, EndgameType, SystemType >:
[legend]

Public Types

using OwnedT = zero_dim_detail::OwnedHomotopy<SystemType>
 The system-owning base.
using EngineT = HomotopySolver<TrackerType, EndgameType, SystemType>
 The continuation-engine base.
using FactoryT = typename OwnedT::FactoryT
 The start-system factory type.
using TrackerT = TrackerType
 The path-tracker type.
using EndgameT = EndgameType
 The endgame type.
using SystemT = SystemType
 The system type.
using StartSystemT = bertini::start_system::StartSystem
 The start-system type (seen polymorphically).
using StartSystemBaseT = bertini::start_system::StartSystem
 The start-system base type.
using BaseComplexT = typename tracking::TrackerTraits<TrackerType>::BaseComplexT
 a bunch of using statements to reduce typing.
using BaseRealT = typename tracking::TrackerTraits<TrackerType>::BaseRealT
 The real number type of the tracker.
using PrecisionConfig = typename tracking::TrackerTraits<TrackerType>::PrecisionConfig
 The tracker's precision-configuration type.
using SolnIndT = typename SolnCont<BaseComplexT>::size_type
 Index type for solutions/paths.
using Config
 The Configured base storing this solver's configuration structs.
using Tolerances = TolerancesConfig
 Tolerances configuration type.
using PostProcessing = PostProcessingConfig
 Post-processing configuration type.
using ZeroDimConf = ZeroDimConfig
 Zero-dim configuration type.
using AutoRetrack = AutoRetrackConfig
 Auto-retrack configuration type.
using EGBoundaryMetaDataT = EGBoundaryMetaData<BaseComplexT>
 Endgame-boundary metadata type.
using SolutionMetaDataT = SolutionMetaData<BaseComplexT>
 Per-solution metadata type.
using MidpathType = MidpathChecker<BaseRealT, BaseComplexT, EGBoundaryMetaData<BaseComplexT>>
 The midpath (path-crossing) checker type.
using UsedConfigs
 The list of configuration types this object holds.

Public Member Functions

 ZeroDimSolver (SystemType const &target, FactoryT factory=bertini::start_system::MakeStartFactory< bertini::start_system::TotalDegreeBinomial, SystemType >())
 Build the start system + homotopy from target, then construct the engine over them.
SystemType const & RecordsTargetSystem () const override
 The records name the PRISTINE user-supplied system as this solve's target (see HomotopySolver::RecordsTargetSystem).
bool WasRandomized () const
 Whether the supplied system was over-determined and squared-up by randomization.
Mat< complex_mp > const & RandomizationMatrix () const
 The randomization matrix used to square up (empty if the system was already square).
bool ObservableIsA (std::type_index t) const override
 Whether this observable may be observed as the given type.
const SystemType & TargetSystem () const
const StartSystemBaseT & StartSystem () const
const SystemType & Homotopy () const
void Run () override
 Main Run() function provided for calling from the blackbox mode.
void WriteMainData (std::ostream &out) const override
 Write the human-readable main-data report to out.
void WriteRawData (std::ostream &out) const override
 Write the raw-data report to out.
void WriteFiniteSolutions (std::ostream &out) const override
 Write the finite solutions (Bertini 1.7 format) to out.
void WriteRealFiniteSolutions (std::ostream &out) const override
 Write the real finite solutions (Bertini 1.7 format) to out.
void WriteNonsingularSolutions (std::ostream &out) const override
 Write the nonsingular solutions (Bertini 1.7 format) to out.
void WriteSingularSolutions (std::ostream &out) const override
 Write the singular solutions (Bertini 1.7 format) to out.
void WriteRawSolutions (std::ostream &out) const override
 Write the raw solutions (Bertini 1.7 format) to out.
void ApplyParsedConfigs (std::string const &config_str) override
 Apply configuration settings parsed from a classic-input config string.
void DefaultSetup ()
 setup functions
void DefaultSystemSetup ()
 Read off the number of start points the (already-built) start system will produce.
void DefaultSettingsSetup ()
 Fills the tolerances and retrack settings from default values.
void SetMidpathRetrackTol (NumErrorT const &rt)
 Set the tolerance used when re-tracking paths flagged by the midpath check.
const auto & MidpathRetrackTol () const
void SetStartPointPrecision (unsigned p)
 Set the precision at which start points are computed.
unsigned StartPointPrecision () const
void DefaultMidpathSetup ()
 call this after setting up the tolerances, etc.
void SetMidpath (MidPathConfig const &mp)
 Apply a configuration to the midpath (path-crossing) checker.
void DefaultTrackerSetup ()
 Takes the default action to set up the zero dim algorithm with the default constructed tracker.
void SetTracker (TrackerType const &new_tracker)
 Sets the tracker to one you supply to this function.
const TrackerType & GetTracker () const
 Gets the tracker.
TrackerType & GetTracker ()
 Gets the tracker.
void SetEndgame (EndgameType const &new_endgame)
 endgame specific stuff
const EndgameType & GetEndgame () const
 Gets the endgame.
EndgameType & GetEndgame ()
 Gets the endgame.
template<typename T>
const T & GetFromEndgame () const
 Get a configuration struct of type T from the endgame.
template<typename T>
void SetToEndgame (T const &t)
 Set a configuration struct of type T on the endgame.
void Solve ()
 the main functions
const auto & SolutionsUserCoords () const
 Get the computed solutions, in the coordinates of the user's original variables.
const auto & SolutionsInternalCoords () const
 Get the computed solutions in the solver's internal coordinates: homogenized, and lying on the target system's patch.
template<typename Pred>
SolnCont< Vec< BaseComplexT > > SolutionsWhere (Pred pred, bool user_coords=true, bool merge_multiplicities=false) const
 Select the solution points whose parallel metadata satisfies a predicate.
SolnCont< Vec< BaseComplexT > > FiniteSolutions (bool user_coords=true, bool merge_multiplicities=false) const
 The finite solutions: successful, finite endpoints that ARE solutions of the target (is_finite applies the configured endpoint_finite_threshold; nonsolutions are excluded).
SolnCont< Vec< BaseComplexT > > RealSolutions (bool user_coords=true, bool merge_multiplicities=false) const
 The real finite solutions (is_real applies the configured tolerance).
SolnCont< Vec< BaseComplexT > > NonsingularSolutions (bool user_coords=true, bool merge_multiplicities=false) const
 The nonsingular finite solutions (simple, well-conditioned roots).
SolnCont< Vec< BaseComplexT > > SingularSolutions (bool user_coords=true, bool merge_multiplicities=false) const
 The singular finite solutions (multiple or ill-conditioned roots).
SolnCont< Vec< BaseComplexT > > Nonsolutions (bool user_coords=true) const
 The NONSOLUTIONS: finite, successful endpoints that are NOT solutions of the target system – the extraneous nonsolutions squaring up an over-determined system introduces.
SolnCont< Vec< BaseComplexT > > InfiniteSolutions (bool user_coords=true) const
 The solutions at infinity: endpoints not classified finite (is_finite is false) – the complement of FiniteSolutions within the full solution list.
const auto & SolutionMetadata () const
 Get the metadat associated with the final computed solutions.
NumErrorT DefaultPointMatchTolerance () const
 The default point-match tolerance for MetadataForPoint / CoincidentMetadataForPoint.
NumErrorT SamePointTolerance () const
 The same-point (clustering) tolerance: final_tolerance * same_point_tolerance_multiplier.
SolutionMetaDataT MetadataForPoint (Vec< BaseComplexT > const &point, NumErrorT tol, bool user_coords=true, bool representatives_only=true) const
 The metadata of the solution matching point – the cluster REPRESENTATIVE (issue #302).
std::vector< SolutionMetaDataT > CoincidentMetadataForPoint (Vec< BaseComplexT > const &point, NumErrorT tol, bool user_coords=true) const
 All metadata records for the paths coincident with point (issue #302).
const auto & EndgameBoundarySolutions () const
 Get the solutions as computed at the endgame boundary.
const MidpathCheckReport & EndgameBoundaryMetadata () const
 Get the report from the midpath (path-crossing) check performed at the endgame boundary: how many crossings were detected, which paths, how many re-track attempts were made, and whether the check ultimately passed.
SolveReport Report () const
 A concise summary of the solve: how every path ended, by category, and whether any path was lost.
void RecordTo (std::shared_ptr< records::OutputDirectory > directory)
 Attach a structured output directory: this solve records to (and memoizes/resumes from) it.
void RecordToPath (std::string const &path) override
 Attach an output directory by path (the AnyZeroDim polymorphic hook).
std::string RecordsRunIdentity () const override
 This solve's run id (the AnyZeroDim polymorphic hook).
void AppendRecordJson (std::string const &record_json) override
 Append a raw JSON record to the attached directory (no-op if none).
std::string PutRecordsDefinition (std::string const &content, std::string const &kind, std::string const &label={}) override
 Store a definition of the given kind (optional role label in the filename) in the attached directory (empty id if none).
void DeclareFiniteSolutionsResult ()
 Auto-declare this run's finite solutions as a result record and render the derived views – "what were my solutions?" answered by every recording solve, CLI and Python alike.
std::shared_ptr< records::OutputDirectory > const & Records () const
 The attached output directory (null when not recording).
unsigned long long NumPaths () const
 How many paths there are to answer: the start system's start point count.
unsigned long long NumPathsRecalled () const
 How many paths the last Solve() recalled from records instead of computing.
bool WasStoppedEarly () const
 Was the last Solve() stopped before it finished?
unsigned long long NumPathsNeverStarted () const
 How many paths the last Solve() never began, because it was stopped.
std::string const & RecordsRunId () const
 This solve's run id in the records (empty when not recording).
void MaybeAttachAmbientRecords ()
 Attach the ambient output directory (manager rank only; workers never touch the records).
void SetRecordedStartProvenance (std::vector< boost::json::object > refs, std::string start_identity)
 Declare where this solve's start points came from, for the records (chains and givens).
std::string CanonicalSettingsText () const
 The canonical text of this solver's FULL settings: the algorithm-level configs, then the tracker's own, then the endgame's – everything that decides what gets computed (the second plank of archiving the algorithms).
boost::json::object RecordsAsk () const
 The ask identity of this solve: op + tracker/endgame kind (stable record names, never typeid) + target digest + settings digest + seed.
template<typename... EGConfTs>
void AppendEndgameConfigEncodings (std::ostringstream &text, detail::TypeList< EGConfTs... >) const
 Append the canonical encodings of the endgame's configs (its AlgoTraits::NeededConfigs, in declaration order) to the settings text.
void EnsureRunRecorded ()
 Ensure this solve's run header is on record (appending it if absent) and set the run id.
std::vector< SolnIndT > RecallRecordedPaths (std::vector< SolnIndT > const &all_indices)
 Recall recorded paths into the solver's state and return the indices still to compute.
void TallyStoppedSolve (std::vector< SolnIndT > const &dispatched)
 After dispatching paths, work out whether this solve was cut short, and say so.
void RecordCompletedPath (parallel::FullPathResult< BaseComplexT > const &r)
 Emit the path record for one completed path into the run's results file (called from StoreFullPathResult on the main/manager thread; no-op while recalling or when not recording).
template<typename T, typename = typename std::enable_if<IsTemplateParameter<T,Ts...>::value>::type>
const T & Get () const
 Retrieve a stored configuration struct by type (inherited from Configured).
void Set (T const &t)
 Set the held configuration object of type T.
void AddObserver (AnyObserver &new_observer) const
 Add an observer (non-owning) to observe this observable.
void AddObserver (std::shared_ptr< AnyObserver > const &new_observer) const
 Add an observer whose lifetime is co-owned by this observable.
void RemoveObserver (AnyObserver &observer) const
 Remove an observer from this observable.

Static Public Member Functions

static bool AbandonmentIsReusable (parallel::FullPathResult< BaseComplexT > const &r, double current_limit)
 Under RecallPolicy::Completed, may this recorded path stand in for tracking it?

Public Attributes

std::tuple< Ts... > configuration_
 The held configuration objects, one per config type.

Protected Member Functions

void PostEGAction () override
 After the engine classifies the endpoints, discard the extraneous solutions that squaring an over-determined system introduces.
void ResetSystems (SystemType const &hom, StartSystemBaseT const &start, SystemType const &target)
 Re-seat the system references (used after an MPI broadcast re-materializes the owned systems).
void ComputePostTrackMetadata ()
 Populates the result_ member, with the post-processed results of the zero dim solve.
void ClassifyFiniteAndReal ()
 Classify each successful endpoint as finite/infinite, and (when finite) real.
void ComputeMultiplicities ()
 Cluster identical endpoints to compute multiplicities.
void ClassifySingular ()
 Classify each successful endpoint as singular or not.
parallel::FullPathResult< BaseComplexT > PackFullPathResult (SolnIndT idx) const
 Pack everything computed for one whole path into a single result value (thread/MPI handoff).
void StoreFullPathResult (parallel::FullPathResult< BaseComplexT > const &r)
 Install a whole-path result (from PackFullPathResult) into the shared result arrays.
bool SolveDeadlinePassed () const
 Whether the whole-solve wall-clock budget has run out.
void ReadSolveTimeoutAsAnInterrupt (SuccessCode &code, std::chrono::steady_clock::time_point path_start) const
 A path the WHOLE-SOLVE budget cut off reads as interrupted, not as over its own budget.
void NotifyObservers (AnyEvent const &e) const
 Sends an event to observers that subscribed to its exact dynamic type, then to all catch-all (untyped) observers.
void NotifyObservers (AnyEvent &e) const
 Notify all observers of a (mutable) event.
bool HasObservers () const
 Whether anyone is currently observing (conservative).

Static Protected Member Functions

static NumErrorT EndpointSpectralConditionNumber (SystemType const &sys, Vec< BaseComplexT > const &endpoint)
 The spectral-norm condition number of the system's Jacobian at an endpoint.
static Vec< NumErrorT > EndpointSingularValues (SystemType const &sys, Vec< BaseComplexT > const &endpoint)
 The singular values of the system's Jacobian at an endpoint, largest first.
static NumErrorT SpectralConditionNumberOf (Vec< NumErrorT > const &singular_values)
 The spectral condition number from a spectrum: largest over smallest singular value.

Protected Attributes

std::reference_wrapper< const SystemType > target_system_
 Reference to the caller-owned target system.
std::reference_wrapper< const StartSystemBaseT > start_system_
 Reference to the caller-owned start system.
std::reference_wrapper< const SystemType > homotopy_
 Reference to the caller-owned homotopy.
std::shared_ptr< records::OutputDirectory > records_
 The attached output directory (null = not recording).
std::string records_run_id_
 This solve's run id in the records (ask hash prefix).
std::vector< boost::json::object > records_start_refs_
 Per-path start provenance (point_ref/given_ref); empty = canonical start labels.
std::string records_start_identity_
 Identity of externally supplied start data (joins the ask); empty = starts derive from target+seed.
bool recalling_ = false
 True while replaying recorded paths (suppresses re-emission).
bool records_run_resumed_ = false
 True when this ask's run header pre-existed (a re-ask: emit a recall event).
unsigned long long num_recalled_ = 0
 Paths recalled from records in the last Solve().
bool stopped_early_ = false
 True when the last Solve() was asked to stop partway.
std::optional< std::chrono::steady_clock::time_point > solve_deadline_
 The whole-solve wall-clock deadline of the current Solve(), when one was asked for.
unsigned long long num_never_started_ = 0
 Paths the last Solve() never began, because it stopped.
unsigned long long num_start_points_
 Number of start points the start system produces.
NumErrorT midpath_retrack_tolerance_
 Tolerance used when re-tracking paths flagged by the midpath check.
MidpathCheckReport midpath_report_
 populated by EGBoundaryAction; exposed via EndgameBoundaryMetadata()
unsigned start_point_precision_ = DoublePrecision()
 precision at which start points are computed; defaults to initial ambient precision (see PreSolveSetup)
bool start_point_precision_set_by_user_ = false
 Whether the start-point precision was set explicitly by the user.
tracking::PathPrecisionRecorder< TrackerType > path_prec_
 observers used during tracking
TrackerType tracker_
 function objects used during the algorithm
EndgameType endgame_
 The endgame.
MidpathType midpath_
 The midpath (path-crossing) checker.
SolnCont< EGBoundaryMetaDataT > solutions_at_endgame_boundary_
 computed data
SolnCont< Vec< BaseComplexT > > solutions_post_endgame_
 Solution points after the endgame (internal coordinates).
SolnCont< Vec< BaseComplexT > > solutions_user_coords_
 lazy cache for SolutionsUserCoords; serial post-solve access assumed
bool solutions_user_coords_fresh_ = false
 Whether the user-coordinate cache is up to date.
SolnCont< SolutionMetaDataT > solution_final_metadata_
 Final per-solution metadata.

Detailed Description

template<typename TrackerType, typename EndgameType, typename SystemType>
struct bertini::algorithm::ZeroDimSolver< TrackerType, EndgameType, SystemType >

The zero-dimensional solve algorithm: given a polynomial system, form a start system and a homotopy, then run the continuation engine.

The zero-dimensional solve algorithm.

Owns its systems; is-a HomotopySolver.

Owns its systems: it clones the user's target, homogenizes/patches it, builds a start system (via the injected factory) and a homotopy, then drives the continuation engine. It IS-A HomotopySolver – the engine machinery (tracking, endgame, crossing resolution, classification, reporting) is reused, not duplicated – with an OwnedHomotopy base supplying the systems the engine references.

Member Typedef Documentation

◆ AutoRetrack

template<typename TrackerType, typename EndgameType, typename SystemType>
using bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::AutoRetrack = AutoRetrackConfig
inherited

Auto-retrack configuration type.

◆ BaseComplexT

template<typename TrackerType, typename EndgameType, typename SystemType>
using bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::BaseComplexT = typename tracking::TrackerTraits<TrackerType>::BaseComplexT
inherited

a bunch of using statements to reduce typing.

The complex number type of the tracker.

◆ BaseRealT

template<typename TrackerType, typename EndgameType, typename SystemType>
using bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::BaseRealT = typename tracking::TrackerTraits<TrackerType>::BaseRealT
inherited

The real number type of the tracker.

◆ Config

template<typename TrackerType, typename EndgameType, typename SystemType>
using bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::Config
inherited
Initial value:
Definition config.hpp:271
This templated struct allows one to provide a variable typelist of config structs (or anything else f...
Definition configured.hpp:83

The Configured base storing this solver's configuration structs.

◆ EGBoundaryMetaDataT

template<typename TrackerType, typename EndgameType, typename SystemType>
using bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::EGBoundaryMetaDataT = EGBoundaryMetaData<BaseComplexT>
inherited

Endgame-boundary metadata type.

◆ EndgameT

template<typename TrackerType, typename EndgameType, typename SystemType>
using bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::EndgameT = EndgameType
inherited

The endgame type.

◆ EngineT

template<typename TrackerType, typename EndgameType, typename SystemType>
using bertini::algorithm::ZeroDimSolver< TrackerType, EndgameType, SystemType >::EngineT = HomotopySolver<TrackerType, EndgameType, SystemType>

The continuation-engine base.

◆ FactoryT

template<typename TrackerType, typename EndgameType, typename SystemType>
using bertini::algorithm::ZeroDimSolver< TrackerType, EndgameType, SystemType >::FactoryT = typename OwnedT::FactoryT

The start-system factory type.

◆ MidpathType

template<typename TrackerType, typename EndgameType, typename SystemType>
using bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::MidpathType = MidpathChecker<BaseRealT, BaseComplexT, EGBoundaryMetaData<BaseComplexT>>
inherited

The midpath (path-crossing) checker type.

◆ OwnedT

template<typename TrackerType, typename EndgameType, typename SystemType>
using bertini::algorithm::ZeroDimSolver< TrackerType, EndgameType, SystemType >::OwnedT = zero_dim_detail::OwnedHomotopy<SystemType>

The system-owning base.

◆ PostProcessing

template<typename TrackerType, typename EndgameType, typename SystemType>
using bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::PostProcessing = PostProcessingConfig
inherited

Post-processing configuration type.

◆ PrecisionConfig

template<typename TrackerType, typename EndgameType, typename SystemType>
using bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::PrecisionConfig = typename tracking::TrackerTraits<TrackerType>::PrecisionConfig
inherited

The tracker's precision-configuration type.

◆ SolnIndT

template<typename TrackerType, typename EndgameType, typename SystemType>
using bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::SolnIndT = typename SolnCont<BaseComplexT>::size_type
inherited

Index type for solutions/paths.

◆ SolutionMetaDataT

template<typename TrackerType, typename EndgameType, typename SystemType>
using bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::SolutionMetaDataT = SolutionMetaData<BaseComplexT>
inherited

Per-solution metadata type.

◆ StartSystemBaseT

template<typename TrackerType, typename EndgameType, typename SystemType>
using bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::StartSystemBaseT = bertini::start_system::StartSystem
inherited

The start-system base type.

◆ StartSystemT

template<typename TrackerType, typename EndgameType, typename SystemType>
using bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::StartSystemT = bertini::start_system::StartSystem
inherited

The start-system type (seen polymorphically).

◆ SystemT

template<typename TrackerType, typename EndgameType, typename SystemType>
using bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::SystemT = SystemType
inherited

The system type.

◆ Tolerances

template<typename TrackerType, typename EndgameType, typename SystemType>
using bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::Tolerances = TolerancesConfig
inherited

Tolerances configuration type.

◆ TrackerT

template<typename TrackerType, typename EndgameType, typename SystemType>
using bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::TrackerT = TrackerType
inherited

The path-tracker type.

◆ UsedConfigs

using bertini::detail::Configured< Ts >::UsedConfigs
inherited

The list of configuration types this object holds.

◆ ZeroDimConf

template<typename TrackerType, typename EndgameType, typename SystemType>
using bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::ZeroDimConf = ZeroDimConfig
inherited

Zero-dim configuration type.

Constructor & Destructor Documentation

◆ ZeroDimSolver()

template<typename TrackerType, typename EndgameType, typename SystemType>
bertini::algorithm::ZeroDimSolver< TrackerType, EndgameType, SystemType >::ZeroDimSolver ( SystemType const & target,
FactoryT factory = bertini::start_system::MakeStartFactory<bertini::start_system::TotalDegreeBinomial, SystemType>() )
inline

Build the start system + homotopy from target, then construct the engine over them.

Base initialization order is declaration order: OwnedHomotopy (which builds) runs before the HomotopySolver engine (which references the freshly built systems). The factory defaults to TotalDegreeBinomial (the interim default start system).

Member Function Documentation

◆ AbandonmentIsReusable()

template<typename TrackerType, typename EndgameType, typename SystemType>
bool bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::AbandonmentIsReusable ( parallel::FullPathResult< BaseComplexT > const & r,
double current_limit )
inlinestaticinherited

Under RecallPolicy::Completed, may this recorded path stand in for tracking it?

A completed path always may. An interrupted path never may. A path a wall-clock limit cut off may only while the current per-path limit is set and asks no more patience than the recorded one – the same amount of waiting, or less, on the same machine; across machines the comparison is a heuristic, which is why the stamp (steps, precision, time reached) travels with the record too.

Parameters
rThe decoded record.
current_limitThis run's per-path wall-clock limit in seconds (0 = none).
Returns
Whether the record is reusable.

◆ AddObserver() [1/2]

void bertini::Observable::AddObserver ( AnyObserver & new_observer) const
inlineinherited

Add an observer (non-owning) to observe this observable.

Stores only a raw reference: the caller is responsible for keeping the observer alive while it is attached. This is the right overload for stack-allocated C++ observers added and removed within a scope. For an observer whose lifetime you would rather have tracked, see the shared_ptr overload.

Observers that override SubscribedEventTypes() with a non-empty list are registered in a type-indexed map so NotifyObservers only calls them for events they declared interest in. Observers returning an empty list (the default) are placed in a catch-all list and receive every event.

Safe to call from inside an observer's Observe() (i.e. during a notification): the add is deferred and applied once the current notification loop finishes. This is what lets a "meta-observer" attach new observers in response to events.

Exceptions
IncompatibleObserverif the observer's ObservedKind() is not one this observable can be observed as.

◆ AddObserver() [2/2]

void bertini::Observable::AddObserver ( std::shared_ptr< AnyObserver > const & new_observer) const
inlineinherited

Add an observer whose lifetime is co-owned by this observable.

The observable keeps a shared_ptr, so the observer stays alive (and keeps receiving events) for as long as it is attached, even after the caller drops their own reference — "attach it and forget it", with no dangling. It is released when RemoveObserver is called or this observable is destroyed. (Stack-allocated C++ observers can't be shared_ptr-owned; use the reference overload for those.)

Exceptions
IncompatibleObserverif incompatible (see the reference overload).

◆ AppendEndgameConfigEncodings()

template<typename TrackerType, typename EndgameType, typename SystemType>
template<typename... EGConfTs>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::AppendEndgameConfigEncodings ( std::ostringstream & text,
detail::TypeList< EGConfTs... >  ) const
inlineinherited

Append the canonical encodings of the endgame's configs (its AlgoTraits::NeededConfigs, in declaration order) to the settings text.

Template Parameters
EGConfTsThe endgame's config types, from its NeededConfigs list.
Parameters
textThe settings text being built.

◆ AppendRecordJson()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::AppendRecordJson ( std::string const & record_json)
inlineoverridevirtualinherited

Append a raw JSON record to the attached directory (no-op if none).

Reimplemented from bertini::algorithm::AnyZeroDim.

◆ ApplyParsedConfigs()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::ApplyParsedConfigs ( std::string const & config_str)
overridevirtualinherited

Apply configuration settings parsed from a classic-input config string.

Implements bertini::algorithm::AnyZeroDim.

◆ CanonicalSettingsText()

template<typename TrackerType, typename EndgameType, typename SystemType>
std::string bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::CanonicalSettingsText ( ) const
inlineinherited

The canonical text of this solver's FULL settings: the algorithm-level configs, then the tracker's own, then the endgame's – everything that decides what gets computed (the second plank of archiving the algorithms).

The order is the contract (fixed per solver kind): version line; ZeroDimConf, Tolerances, AutoRetrack, PostProcessing; the tracker's Stepping, Newton, Predictor, and precision config (fixed or adaptive); then the endgame's configs in its AlgoTraits::NeededConfigs declaration order; then MidPath. One encoding per line, trailing newline. The settings digest is SHA-256 over exactly this text.

MidPath sits last because the order is extended by APPENDING, never by inserting or reordering (ADR-0043) – it is an algorithm-level config and reads out of place there, which is the visible price of a rule worth keeping. It was missing until b2cfgenc/4: it governs path-crossing detection, so two solves that disagree about same_point_tolerance can reach different answers, and until the bump they were the same ask and recalled each other's results.

Returns
The versioned canonical settings text.

◆ ClassifyFiniteAndReal()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::ClassifyFiniteAndReal ( )
inlineprotectedinherited

Classify each successful endpoint as finite/infinite, and (when finite) real.

Uses the same dehomogenize-then-infinity-norm measurement the endgames use for their Security::max_norm divergence test (System::InfinityNormOfDehomogenized), compared against endpoint_finite_threshold – so the metadata can never contradict the endgame's own verdict. Endpoints the endgame already flagged as diverging (GoingToInfinity / SecurityMaxNormReached) are taken as infinite without recomputation. A finite endpoint is real if the infinity norm of the imaginary parts of its dehomogenized coordinates is below real_threshold.

◆ ClassifySingular()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::ClassifySingular ( )
inlineprotectedinherited

Classify each successful endpoint as singular or not.

Matching Bertini 1: an endpoint is singular if it is the endpoint of multiple paths (multiplicity > 1), or if the approximation of its condition number, in the spectral norm, exceeds condition_number_threshold. The condition number compared here is the one computed at the endpoint by EndpointSpectralConditionNumber – see that function for why the tracker's running estimate must not be substituted.

◆ CoincidentMetadataForPoint()

template<typename TrackerType, typename EndgameType, typename SystemType>
std::vector< SolutionMetaDataT > bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::CoincidentMetadataForPoint ( Vec< BaseComplexT > const & point,
NumErrorT tol,
bool user_coords = true ) const
inlineinherited

All metadata records for the paths coincident with point (issue #302).

Like MetadataForPoint, but returns EVERY coincident copy's record – their individual per-path diagnostics (condition number, residual, precision) – ALWAYS as a list (length 1 for a simple root). The point is matched to its cluster REPRESENTATIVE (nearest representative within tol, like MetadataForPoint), then the whole cluster is gathered: every endpoint within SamePointTolerance of that representative – i.e. exactly the paths ComputeMultiplicities grouped together. So the returned count is the multiplicity, independent of tol. Throws if no representative matches within tol.

Parameters
pointThe point to look up.
tolThe infinity-norm match tolerance for finding the cluster's representative.
user_coordsWhether point is in user coordinates.
See also
MetadataForPoint

◆ ComputeMultiplicities()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::ComputeMultiplicities ( )
inlineprotectedinherited

Cluster identical endpoints to compute multiplicities.

Two endpoints are the same point when the infinity norm of the difference of their dehomogenized* coordinates is below final_tolerance * same_point_tolerance_multiplier. Comparing dehomogenized (user) coordinates – not the internal homogenized, on-patch coordinates, which carry the homogenizing variable and patch scaling – is essential; the infinity norm matches the convergence norm the endgames use. Only finite, successful endpoints are clustered (an at-infinity endpoint has no meaningful dehomogenized coordinates to compare).

◆ ComputePostTrackMetadata()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::ComputePostTrackMetadata ( )
inlineprotectedinherited

Populates the result_ member, with the post-processed results of the zero dim solve.

output: result_ member variable.

◆ DeclareFiniteSolutionsResult()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::DeclareFiniteSolutionsResult ( )
inlineinherited

Auto-declare this run's finite solutions as a result record and render the derived views – "what were my solutions?" answered by every recording solve, CLI and Python alike.

Called after post-processing; no-op when not recording.

◆ DefaultMidpathSetup()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::DefaultMidpathSetup ( )
inlineinherited

call this after setting up the tolerances, etc.

◆ DefaultPointMatchTolerance()

template<typename TrackerType, typename EndgameType, typename SystemType>
NumErrorT bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::DefaultPointMatchTolerance ( ) const
inlineinherited

The default point-match tolerance for MetadataForPoint / CoincidentMetadataForPoint.

The solver's final_tolerance – the accuracy each endpoint is computed to. This is the right scale for "does this point equal that solution", and it is deliberately NOT the (looser) same-point clustering tolerance (SamePointTolerance). MetadataForPoint matches against the multiplicity REPRESENTATIVES, which are at least SamePointTolerance apart by construction; since final_tolerance is that divided by same_point_tolerance_multiplier (>= 1), a match window this size holds at most one representative – so a point taken straight from this solver's own solution lists (solutions(), real_solutions(), ..., which return representatives by default) matches its own representative back and can never be reported ambiguous. Returned as NumErrorT, the error/tolerance type (an alias for double), matching IsDistinct.

See also
SamePointTolerance

◆ DefaultSettingsSetup()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::DefaultSettingsSetup ( )
inlineinherited

Fills the tolerances and retrack settings from default values.

◆ DefaultSetup()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::DefaultSetup ( )
inlineinherited

setup functions

◆ DefaultSystemSetup()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::DefaultSystemSetup ( )
inlineinherited

Read off the number of start points the (already-built) start system will produce.

◆ DefaultTrackerSetup()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::DefaultTrackerSetup ( )
inlineinherited

Takes the default action to set up the zero dim algorithm with the default constructed tracker.

Note
should be called after the homotopy is set up, ideally.

◆ EndgameBoundaryMetadata()

template<typename TrackerType, typename EndgameType, typename SystemType>
const MidpathCheckReport & bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::EndgameBoundaryMetadata ( ) const
inlineinherited

Get the report from the midpath (path-crossing) check performed at the endgame boundary: how many crossings were detected, which paths, how many re-track attempts were made, and whether the check ultimately passed.

See also
MidpathCheckReport

◆ EndgameBoundarySolutions()

template<typename TrackerType, typename EndgameType, typename SystemType>
const auto & bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::EndgameBoundarySolutions ( ) const
inlineinherited

Get the solutions as computed at the endgame boundary.

◆ EndpointSingularValues()

template<typename TrackerType, typename EndgameType, typename SystemType>
Vec< NumErrorT > bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::EndpointSingularValues ( SystemType const & sys,
Vec< BaseComplexT > const & endpoint )
inlinestaticprotectedinherited

The singular values of the system's Jacobian at an endpoint, largest first.

The spectrum behind EndpointSpectralConditionNumber, kept whole: it is what a caller needs to read a numerical rank at a tolerance of its own choosing (b2#409).

Parameters
sysThe (homogenized, patched) system whose Jacobian to measure; its precision must already match the endpoint's.
endpointThe solution point, in the system's own (homogenized) coordinates.
Returns
The singular values in decreasing order, as NumErrorT.

◆ EndpointSpectralConditionNumber()

template<typename TrackerType, typename EndgameType, typename SystemType>
NumErrorT bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::EndpointSpectralConditionNumber ( SystemType const & sys,
Vec< BaseComplexT > const & endpoint )
inlinestaticprotectedinherited

The spectral-norm condition number of the system's Jacobian at an endpoint.

This is the quantity Bertini 1's CondNumThreshold is specified against ("an approximation of the condition number, in the spectral norm"): $\sigma_{max} /
\sigma_{min}$ of the homogenized, patched target system's Jacobian, evaluated AT the endpoint, at the endpoint's own precision.

The tracker's running estimate (LatestConditionNumber(): norm_J * norm_J_inverse from a random-RHS LU probe, refreshed only every frequency_of_CN_estimation steps, on the homotopy mid-path) is NOT a substitute and must not be used for classification: endpoints lying exactly on a positive-dimensional component – whose Jacobian is provably rank-deficient, spectral condition number effectively infinite – have been observed carrying tracker estimates as low as ~1e3, silently classifying as nonsingular. The tracker estimate remains available per-step via observers.

A singular-to-working-precision Jacobian (smallest singular value 0, or an empty singular value list) yields +infinity, which compares correctly against any threshold.

Parameters
sysThe (homogenized, patched) system whose Jacobian to measure; its precision must already match the endpoint's.
endpointThe solution point, in the system's own (homogenized) coordinates.
Returns
The spectral condition number, as NumErrorT.

◆ EnsureRunRecorded()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::EnsureRunRecorded ( )
inlineinherited

Ensure this solve's run header is on record (appending it if absent) and set the run id.

Requires an attached directory; call after PreSolveSetup.

◆ FiniteSolutions()

template<typename TrackerType, typename EndgameType, typename SystemType>
SolnCont< Vec< BaseComplexT > > bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::FiniteSolutions ( bool user_coords = true,
bool merge_multiplicities = false ) const
inlineinherited

The finite solutions: successful, finite endpoints that ARE solutions of the target (is_finite applies the configured endpoint_finite_threshold; nonsolutions are excluded).

Includes singular, nonsingular, and real solutions alike.

See also
RealSolutions, SingularSolutions, NonsingularSolutions, Nonsolutions

◆ Get()

template<typename TrackerType, typename EndgameType, typename SystemType>
template<typename T, typename = typename std::enable_if<IsTemplateParameter<T,Ts...>::value>::type>
const T & bertini::detail::Configured< Ts >::Get ( ) const
inlineinherited

Retrieve a stored configuration struct by type (inherited from Configured).

◆ GetEndgame() [1/2]

template<typename TrackerType, typename EndgameType, typename SystemType>
EndgameType & bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::GetEndgame ( )
inlineinherited

Gets the endgame.

This version gets a mutable reference to it.

◆ GetEndgame() [2/2]

template<typename TrackerType, typename EndgameType, typename SystemType>
const EndgameType & bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::GetEndgame ( ) const
inlineinherited

Gets the endgame.

This version gets a const reference to it.

◆ GetFromEndgame()

template<typename TrackerType, typename EndgameType, typename SystemType>
template<typename T>
const T & bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::GetFromEndgame ( ) const
inlineinherited

Get a configuration struct of type T from the endgame.

◆ GetTracker() [1/2]

template<typename TrackerType, typename EndgameType, typename SystemType>
TrackerType & bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::GetTracker ( )
inlineinherited

Gets the tracker.

This version gets a mutable reference to it.

◆ GetTracker() [2/2]

template<typename TrackerType, typename EndgameType, typename SystemType>
const TrackerType & bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::GetTracker ( ) const
inlineinherited

Gets the tracker.

This version gets a const reference to it.

◆ HasObservers()

bool bertini::Observable::HasObservers ( ) const
inlineprotectedinherited

Whether anyone is currently observing (conservative).

Lets an emitter skip constructing an event – and any work needed to build its payload, such as a numeric-type conversion – when there is no observer to receive it. Conservative: returns true if any watcher list is non-empty (even if a stale, emptied typed bucket lingers), so it never wrongly suppresses a real observer.

◆ Homotopy()

template<typename TrackerType, typename EndgameType, typename SystemType>
const SystemType & bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::Homotopy ( ) const
inlineinherited
Returns
The homotopy.

◆ InfiniteSolutions()

template<typename TrackerType, typename EndgameType, typename SystemType>
SolnCont< Vec< BaseComplexT > > bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::InfiniteSolutions ( bool user_coords = true) const
inlineinherited

The solutions at infinity: endpoints not classified finite (is_finite is false) – the complement of FiniteSolutions within the full solution list.

These are the paths the endgame resolved as diverging (its GoingToInfinity / SecurityMaxNormReached verdict, or a successful endpoint whose dehomogenized infinity norm exceeds endpoint_finite_threshold).

Note
A path that FAILED before the endgame also leaves is_finite at its default (false) and so appears here; its stored point is not a meaningful solution at infinity. Consult the endgame_success_code in SolutionMetadata (or Report()) to distinguish a true divergence from a tracking failure.
See also
FiniteSolutions

◆ MaybeAttachAmbientRecords()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::MaybeAttachAmbientRecords ( )
inlineinherited

Attach the ambient output directory (manager rank only; workers never touch the records).

Records are ON BY DEFAULT for every solver, matching the CLI and bertini.solve (ADR-0047): the resolution – unset BERTINI_RECORDS_DIR means ./bertini_output, a value chooses the directory, none (or the POSIX-only empty string) means explicitly no records – lives in records::AmbientRecordsPath. An explicit RecordTo(...) always wins over the ambient resolution.

◆ MetadataForPoint()

template<typename TrackerType, typename EndgameType, typename SystemType>
SolutionMetaDataT bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::MetadataForPoint ( Vec< BaseComplexT > const & point,
NumErrorT tol,
bool user_coords = true,
bool representatives_only = true ) const
inlineinherited

The metadata of the solution matching point – the cluster REPRESENTATIVE (issue #302).

Matches point against the solutions (user coordinates by default) with the infinity-norm tolerance tol (see IsDistinct), and returns the representative's metadata. The return type never depends on the point's multiplicity: this ALWAYS returns exactly one record (it carries multiplicity, so you still learn m). Throws if no solution matches, or if point matches more than one distinct cluster (reduce tol).

Parameters
pointThe point to look up, in user (dehomogenized) coordinates unless user_coords is false.
tolThe infinity-norm match tolerance. Defaults (via the binding sentinel) to DefaultPointMatchTolerance.
user_coordsWhether point is in user coordinates (else the solver's internal coordinates).
representatives_onlyMatch point only against the multiplicity representatives (the default – one candidate per distinct solution, so a point fed back from the solver's own solution lists resolves to its representative and never reports ambiguity). Pass false to match against EVERY endpoint including non-representative multiplicity copies – a debugging view, not the usual case.
See also
CoincidentMetadataForPoint

◆ MidpathRetrackTol()

template<typename TrackerType, typename EndgameType, typename SystemType>
const auto & bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::MidpathRetrackTol ( ) const
inlineinherited
Returns
The tolerance used when re-tracking paths flagged by the midpath check.

◆ NonsingularSolutions()

template<typename TrackerType, typename EndgameType, typename SystemType>
SolnCont< Vec< BaseComplexT > > bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::NonsingularSolutions ( bool user_coords = true,
bool merge_multiplicities = false ) const
inlineinherited

The nonsingular finite solutions (simple, well-conditioned roots).

◆ Nonsolutions()

template<typename TrackerType, typename EndgameType, typename SystemType>
SolnCont< Vec< BaseComplexT > > bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::Nonsolutions ( bool user_coords = true) const
inlineinherited

The NONSOLUTIONS: finite, successful endpoints that are NOT solutions of the target system – the extraneous nonsolutions squaring up an over-determined system introduces.

Empty for a system solved without randomization. These are excluded from FiniteSolutions / RealSolutions / etc.; a regeneration cascade reads them to discard nonsolutions.

See also
is_nonsolution

◆ NotifyObservers() [1/2]

void bertini::Observable::NotifyObservers ( AnyEvent & e) const
inlineprotectedinherited

Notify all observers of a (mutable) event.

◆ NotifyObservers() [2/2]

void bertini::Observable::NotifyObservers ( AnyEvent const & e) const
inlineprotectedinherited

Sends an event to observers that subscribed to its exact dynamic type, then to all catch-all (untyped) observers.

Mutations of the observer lists are deferred for the duration of a notification (see AddObserver/RemoveObserver), so iterating the live lists here is safe even when an observer subscribes/unsubscribes mid-dispatch. An observer that returns ObserveResult::Unsubscribe is dropped once the (possibly nested) notification completes. The depth counter keeps this correct under re-entrant emission.

◆ NumPaths()

template<typename TrackerType, typename EndgameType, typename SystemType>
unsigned long long bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::NumPaths ( ) const
inlineinherited

How many paths there are to answer: the start system's start point count.

Known once PreSolveSetup has run, which is before the first path event, so a watcher can size itself from the AlgorithmStarted event. Zero before that.

◆ NumPathsNeverStarted()

template<typename TrackerType, typename EndgameType, typename SystemType>
unsigned long long bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::NumPathsNeverStarted ( ) const
inlineinherited

How many paths the last Solve() never began, because it was stopped.

◆ NumPathsRecalled()

template<typename TrackerType, typename EndgameType, typename SystemType>
unsigned long long bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::NumPathsRecalled ( ) const
inlineinherited

How many paths the last Solve() recalled from records instead of computing.

◆ ObservableIsA()

template<typename TrackerType, typename EndgameType, typename SystemType>
bool bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::ObservableIsA ( std::type_index t) const
inlineoverridevirtualinherited

Whether this observable may be observed as the given type.

Drives the compatibility check in AddObserver. The default accepts the wildcard typeid(void) and this observable's own dynamic type. An observable that emits its events templated on a base type (so a single observer type serves many concrete observables) should also accept that base type — e.g. ZeroDim accepts AnyZeroDim.

Reimplemented from bertini::Observable.

◆ PackFullPathResult()

template<typename TrackerType, typename EndgameType, typename SystemType>
parallel::FullPathResult< BaseComplexT > bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::PackFullPathResult ( SolnIndT idx) const
inlineprotectedinherited

Pack everything computed for one whole path into a single result value (thread/MPI handoff).

Parameters
idxThe path index to pack.
Returns
The packed whole-path result.

◆ PostEGAction()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::ZeroDimSolver< TrackerType, EndgameType, SystemType >::PostEGAction ( )
inlineoverrideprotectedvirtual

After the engine classifies the endpoints, discard the extraneous solutions that squaring an over-determined system introduces.

Squaring replaces N equations by n generic combinations, so the square system's isolated solutions are the genuine ones PLUS spurious points that satisfy the combinations but not the original system. Re-evaluate the ORIGINAL (un-randomized) system at each finite endpoint; a residual above a solve-accuracy threshold flags the point is_nonsolution (it stays geometrically finite, but drops out of FiniteSolutions / Real / Singular and is surfaced by Nonsolutions()), and the reported function_residual is updated to that meaningful value. A no-op unless the system was squared up.

Reimplemented from bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >.

◆ PutRecordsDefinition()

template<typename TrackerType, typename EndgameType, typename SystemType>
std::string bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::PutRecordsDefinition ( std::string const & content,
std::string const & kind,
std::string const & label = {} )
inlineoverridevirtualinherited

Store a definition of the given kind (optional role label in the filename) in the attached directory (empty id if none).

Reimplemented from bertini::algorithm::AnyZeroDim.

◆ RandomizationMatrix()

template<typename TrackerType, typename EndgameType, typename SystemType>
Mat< complex_mp > const & bertini::algorithm::ZeroDimSolver< TrackerType, EndgameType, SystemType >::RandomizationMatrix ( ) const
inline

The randomization matrix used to square up (empty if the system was already square).

◆ ReadSolveTimeoutAsAnInterrupt()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::ReadSolveTimeoutAsAnInterrupt ( SuccessCode & code,
std::chrono::steady_clock::time_point path_start ) const
inlineprotectedinherited

A path the WHOLE-SOLVE budget cut off reads as interrupted, not as over its own budget.

The tracker cannot tell which deadline it hit; both arrive as WallClockLimitReached. But they mean different things. A per-path budget is a statement about that path, recorded with it and compared on recall. The solve budget is a statement about the call, like a keyboard interrupt: the path was abandoned for a reason that has nothing to do with it, so it is ExternallyTerminated – always re-tracked on recall, and counted by WasStoppedEarly(). The solve deadline was the one that bound if it had passed and the path's own budget, if any, had not yet.

Parameters
codeThe stage's outcome, rewritten in place when the solve budget was what bound.
path_startWhen this path began, to work out whether its own budget had run out.

◆ RealSolutions()

template<typename TrackerType, typename EndgameType, typename SystemType>
SolnCont< Vec< BaseComplexT > > bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::RealSolutions ( bool user_coords = true,
bool merge_multiplicities = false ) const
inlineinherited

The real finite solutions (is_real applies the configured tolerance).

◆ RecallRecordedPaths()

template<typename TrackerType, typename EndgameType, typename SystemType>
std::vector< SolnIndT > bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::RecallRecordedPaths ( std::vector< SolnIndT > const & all_indices)
inlineinherited

Recall recorded paths into the solver's state and return the indices still to compute.

Each recorded path is decoded to a FullPathResult and replayed through StoreFullPathResult – recalled state is identical to computed state by construction (boundary data included, so the midpath check works on resume).

◆ RecordCompletedPath()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::RecordCompletedPath ( parallel::FullPathResult< BaseComplexT > const & r)
inlineinherited

Emit the path record for one completed path into the run's results file (called from StoreFullPathResult on the main/manager thread; no-op while recalling or when not recording).

The record carries the endpoint AND its per-path metadata together – the data and its facts are one thing (history holds only what was asked, when).

◆ Records()

template<typename TrackerType, typename EndgameType, typename SystemType>
std::shared_ptr< records::OutputDirectory > const & bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::Records ( ) const
inlineinherited

The attached output directory (null when not recording).

◆ RecordsAsk()

template<typename TrackerType, typename EndgameType, typename SystemType>
boost::json::object bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::RecordsAsk ( ) const
inlineinherited

The ask identity of this solve: op + tracker/endgame kind (stable record names, never typeid) + target digest + settings digest + seed.

The settings digest is SHA-256 over CanonicalSettingsText() – ALL the configs the solve reads, algorithm + tracker + endgame, in that method's fixed documented order (ADR-0043; extend by appending, never reordering).

Returns
The ask as a json object (hashed for the run id).

◆ RecordsRunId()

template<typename TrackerType, typename EndgameType, typename SystemType>
std::string const & bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::RecordsRunId ( ) const
inlineinherited

This solve's run id in the records (empty when not recording).

◆ RecordsRunIdentity()

template<typename TrackerType, typename EndgameType, typename SystemType>
std::string bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::RecordsRunIdentity ( ) const
inlineoverridevirtualinherited

This solve's run id (the AnyZeroDim polymorphic hook).

Reimplemented from bertini::algorithm::AnyZeroDim.

◆ RecordsTargetSystem()

template<typename TrackerType, typename EndgameType, typename SystemType>
SystemType const & bertini::algorithm::ZeroDimSolver< TrackerType, EndgameType, SystemType >::RecordsTargetSystem ( ) const
inlineoverridevirtual

The records name the PRISTINE user-supplied system as this solve's target (see HomotopySolver::RecordsTargetSystem).

Reimplemented from bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >.

◆ RecordTo()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::RecordTo ( std::shared_ptr< records::OutputDirectory > directory)
inlineinherited

Attach a structured output directory: this solve records to (and memoizes/resumes from) it.

Null detaches. See ADR-0046.

◆ RecordToPath()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::RecordToPath ( std::string const & path)
inlineoverridevirtualinherited

Attach an output directory by path (the AnyZeroDim polymorphic hook).

Uses the process-shared instance for the path: one session history file per directory per process, however many solvers attach.

Reimplemented from bertini::algorithm::AnyZeroDim.

◆ RemoveObserver()

void bertini::Observable::RemoveObserver ( AnyObserver & observer) const
inlineinherited

Remove an observer from this observable.

Like AddObserver, this is safe to call during a notification: the removal is deferred until the current notification loop finishes.

◆ Report()

template<typename TrackerType, typename EndgameType, typename SystemType>
SolveReport bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::Report ( ) const
inlineinherited

A concise summary of the solve: how every path ended, by category, and whether any path was lost.

Computed on demand from the final solution metadata and the midpath report.

See also
SolveReport

◆ ResetSystems()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::ResetSystems ( SystemType const & hom,
StartSystemBaseT const & start,
SystemType const & target )
inlineprotectedinherited

Re-seat the system references (used after an MPI broadcast re-materializes the owned systems).

◆ Run()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::Run ( )
inlineoverridevirtualinherited

Main Run() function provided for calling from the blackbox mode.

Implements bertini::algorithm::AnyAlgorithm.

◆ SamePointTolerance()

template<typename TrackerType, typename EndgameType, typename SystemType>
NumErrorT bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::SamePointTolerance ( ) const
inlineinherited

The same-point (clustering) tolerance: final_tolerance * same_point_tolerance_multiplier.

The tolerance ComputeMultiplicities uses to decide two endpoints are the SAME solution and cluster them into one multiplicity. Looser than DefaultPointMatchTolerance on purpose: distinct paths to a single (especially singular) solution land farther apart than one endpoint's own accuracy. CoincidentMetadataForPoint uses it to gather all copies of a matched cluster.

See also
DefaultPointMatchTolerance

◆ Set()

void bertini::detail::Configured< Ts >::Set ( T const & t)
inlineinherited

Set the held configuration object of type T.

◆ SetEndgame()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::SetEndgame ( EndgameType const & new_endgame)
inlineinherited

endgame specific stuff

Sets the endgame to one you supply to this function.

Assumes you have done all necessary setup to it, including associating it with the homotopy for the ZeroDim algorithm.

Also assumes that you have made the tracker inside the ZeroDim algorithm be the self-same tracker object as is used for the endgame you are setting here.

◆ SetMidpath()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::SetMidpath ( MidPathConfig const & mp)
inlineinherited

Apply a configuration to the midpath (path-crossing) checker.

Stored on the SOLVER, which is the one home for the setting, and pushed into the checker at the start of each solve. The checker was previously the only holder, which put the setting out of reach of the solver's settings surface – the one computational setting a caller could not name (b2#364).

Parameters
mpThe midpath configuration to apply.

◆ SetMidpathRetrackTol()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::SetMidpathRetrackTol ( NumErrorT const & rt)
inlineinherited

Set the tolerance used when re-tracking paths flagged by the midpath check.

◆ SetRecordedStartProvenance()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::SetRecordedStartProvenance ( std::vector< boost::json::object > refs,
std::string start_identity )
inlineinherited

Declare where this solve's start points came from, for the records (chains and givens).

By default a solve's start points derive from the target + seed (canonical start labels – provenance bottoms out at the start system). When the caller supplies start points – a prior run's solutions (a CHAIN) or external data (a GIVEN) – pass one reference object per path, e.g. {"kind":"point_ref","run":<id>,"index":i} or {"kind":"given_ref","given":<definition id>,"index":i}, plus an identity string for the start data as a whole, which JOINS THE ASK: the same homotopy from different start data is a different computation.

Call before Solve() (and before RecordsAsk()/EnsureRunRecorded()).

Parameters
refsOne provenance object per start point, in path-index order.
start_identityDigest/id of the start data (joins the ask identity).

◆ SetStartPointPrecision()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::SetStartPointPrecision ( unsigned p)
inlineinherited

Set the precision at which start points are computed.

Defaults to the initial ambient precision. Set this to carry a higher precision forward (e.g. when one solve's output seeds the next). Once set, PreSolveSetup will not override it.

◆ SetToEndgame()

template<typename TrackerType, typename EndgameType, typename SystemType>
template<typename T>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::SetToEndgame ( T const & t)
inlineinherited

Set a configuration struct of type T on the endgame.

◆ SetTracker()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::SetTracker ( TrackerType const & new_tracker)
inlineinherited

Sets the tracker to one you supply to this function.

Setting the tracker associates the endgame with the tracker you pass in, too. If this is a problem, and you need this generalized so you can use a different tracker for the pre/endgame zones, please file an issue requesting this feature.

Assumes you have done all necessary setup to it, including associating it with the homotopy for the ZeroDim algorithm.

Again, YOU must ensure the tracker is associated with the correct homotopy

◆ SingularSolutions()

template<typename TrackerType, typename EndgameType, typename SystemType>
SolnCont< Vec< BaseComplexT > > bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::SingularSolutions ( bool user_coords = true,
bool merge_multiplicities = false ) const
inlineinherited

The singular finite solutions (multiple or ill-conditioned roots).

◆ SolutionMetadata()

template<typename TrackerType, typename EndgameType, typename SystemType>
const auto & bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::SolutionMetadata ( ) const
inlineinherited

Get the metadat associated with the final computed solutions.

◆ SolutionsInternalCoords()

template<typename TrackerType, typename EndgameType, typename SystemType>
const auto & bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::SolutionsInternalCoords ( ) const
inlineinherited

Get the computed solutions in the solver's internal coordinates: homogenized, and lying on the target system's patch.

These are the coordinates for continuing work – start points for further tracking re-using the target system's patch, refinement, etc. Take a user-coordinates point back to this representation with System::HomogenizePoint on the target system.

See also
SolutionsUserCoords

◆ SolutionsUserCoords()

template<typename TrackerType, typename EndgameType, typename SystemType>
const auto & bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::SolutionsUserCoords ( ) const
inlineinherited

Get the computed solutions, in the coordinates of the user's original variables.

The stored internal solutions are dehomogenized through the target system, once, lazily, into a cache; repeated calls return the cached container by const reference. Assumes post-solve serial access, like the other accessors here.

See also
SolutionsInternalCoords

◆ SolutionsWhere()

template<typename TrackerType, typename EndgameType, typename SystemType>
template<typename Pred>
SolnCont< Vec< BaseComplexT > > bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::SolutionsWhere ( Pred pred,
bool user_coords = true,
bool merge_multiplicities = false ) const
inlineinherited

Select the solution points whose parallel metadata satisfies a predicate.

The backing for the FiniteSolutions / RealSolutions / Singular / Nonsingular convenience accessors. Returns points in user coordinates by default (pass user_coords=false for the solver's internal coordinates), mirroring SolutionsUserCoords / SolutionsInternalCoords.

◆ Solve()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::Solve ( )
inlineinherited

the main functions

Perform the basic Zero Dim solve algorithm.

This function iterates over all start points to the start system, tracking from each to the endgame boundary. At the endgame boundary, path crossings are checked for. Multiple paths which jump onto each other will not be detected, unless you are using a certified tracker, in which case this is prevented in the first place.

Paths which have crossed are re-run, up to a certain number of times.

Then, the points at the endgame boundary are tracked using the prescribed endgame toward the final time.

Finally, results are post-processed.

It is up to you to put the output somewhere.

◆ SolveDeadlinePassed()

template<typename TrackerType, typename EndgameType, typename SystemType>
bool bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::SolveDeadlinePassed ( ) const
inlineprotectedinherited

Whether the whole-solve wall-clock budget has run out.

◆ SpectralConditionNumberOf()

template<typename TrackerType, typename EndgameType, typename SystemType>
NumErrorT bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::SpectralConditionNumberOf ( Vec< NumErrorT > const & singular_values)
inlinestaticprotectedinherited

The spectral condition number from a spectrum: largest over smallest singular value.

A singular-to-working-precision Jacobian (smallest singular value 0, or an empty list) yields +infinity, which compares correctly against any threshold.

Parameters
singular_valuesThe singular values, largest first (see EndpointSingularValues).
Returns
The spectral condition number, as NumErrorT.

◆ StartPointPrecision()

template<typename TrackerType, typename EndgameType, typename SystemType>
unsigned bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::StartPointPrecision ( ) const
inlineinherited
Returns
The precision at which start points are computed.

◆ StartSystem()

template<typename TrackerType, typename EndgameType, typename SystemType>
const StartSystemBaseT & bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::StartSystem ( ) const
inlineinherited
Returns
The start system.

◆ StoreFullPathResult()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::StoreFullPathResult ( parallel::FullPathResult< BaseComplexT > const & r)
inlineprotectedinherited

Install a whole-path result (from PackFullPathResult) into the shared result arrays.

Parameters
rThe packed whole-path result to store.

◆ TallyStoppedSolve()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::TallyStoppedSolve ( std::vector< SolnIndT > const & dispatched)
inlineinherited

After dispatching paths, work out whether this solve was cut short, and say so.

A solve is stopped early if a stop was requested while it ran, which shows up two ways among the paths it was asked to run: one that was in flight came back ExternallyTerminated, and one not yet reached is still NeverStarted. Either is enough; both are counted, because "we abandoned four and never reached nine hundred" is a more useful thing to be told than "we stopped".

◆ TargetSystem()

template<typename TrackerType, typename EndgameType, typename SystemType>
const SystemType & bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::TargetSystem ( ) const
inlineinherited
Returns
The target system being solved.

◆ WasRandomized()

template<typename TrackerType, typename EndgameType, typename SystemType>
bool bertini::algorithm::ZeroDimSolver< TrackerType, EndgameType, SystemType >::WasRandomized ( ) const
inline

Whether the supplied system was over-determined and squared-up by randomization.

◆ WasStoppedEarly()

template<typename TrackerType, typename EndgameType, typename SystemType>
bool bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::WasStoppedEarly ( ) const
inlineinherited

Was the last Solve() stopped before it finished?

True when somebody asked the process to stop (see bertini2/common/stop_request.hpp) while this solve was running. The results are then a PARTIAL set: paths in flight were abandoned and carry SuccessCode::ExternallyTerminated, paths not yet begun are still NeverStarted, and every count derived from them – how many solutions, how many at infinity – describes only what was tracked. Anything reporting on a solve must say so rather than present a partial count as a total.

◆ WriteFiniteSolutions()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::WriteFiniteSolutions ( std::ostream & out) const
inlineoverridevirtualinherited

Write the finite solutions (Bertini 1.7 format) to out.

Implements bertini::algorithm::AnyZeroDim.

◆ WriteMainData()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::WriteMainData ( std::ostream & out) const
inlineoverridevirtualinherited

Write the human-readable main-data report to out.

Implements bertini::algorithm::AnyZeroDim.

◆ WriteNonsingularSolutions()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::WriteNonsingularSolutions ( std::ostream & out) const
inlineoverridevirtualinherited

Write the nonsingular solutions (Bertini 1.7 format) to out.

Implements bertini::algorithm::AnyZeroDim.

◆ WriteRawData()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::WriteRawData ( std::ostream & out) const
inlineoverridevirtualinherited

Write the raw-data report to out.

Implements bertini::algorithm::AnyZeroDim.

◆ WriteRawSolutions()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::WriteRawSolutions ( std::ostream & out) const
inlineoverridevirtualinherited

Write the raw solutions (Bertini 1.7 format) to out.

Implements bertini::algorithm::AnyZeroDim.

◆ WriteRealFiniteSolutions()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::WriteRealFiniteSolutions ( std::ostream & out) const
inlineoverridevirtualinherited

Write the real finite solutions (Bertini 1.7 format) to out.

Implements bertini::algorithm::AnyZeroDim.

◆ WriteSingularSolutions()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::WriteSingularSolutions ( std::ostream & out) const
inlineoverridevirtualinherited

Write the singular solutions (Bertini 1.7 format) to out.

Implements bertini::algorithm::AnyZeroDim.

Member Data Documentation

◆ configuration_

std::tuple<Ts...> bertini::detail::Configured< Ts >::configuration_
inherited

The held configuration objects, one per config type.

◆ endgame_

template<typename TrackerType, typename EndgameType, typename SystemType>
EndgameType bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::endgame_
protectedinherited

The endgame.

◆ homotopy_

template<typename TrackerType, typename EndgameType, typename SystemType>
std::reference_wrapper<const SystemType> bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::homotopy_
protectedinherited

Reference to the caller-owned homotopy.

◆ midpath_

template<typename TrackerType, typename EndgameType, typename SystemType>
MidpathType bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::midpath_
protectedinherited

The midpath (path-crossing) checker.

◆ midpath_report_

template<typename TrackerType, typename EndgameType, typename SystemType>
MidpathCheckReport bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::midpath_report_
protectedinherited

populated by EGBoundaryAction; exposed via EndgameBoundaryMetadata()

◆ midpath_retrack_tolerance_

template<typename TrackerType, typename EndgameType, typename SystemType>
NumErrorT bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::midpath_retrack_tolerance_
protectedinherited

Tolerance used when re-tracking paths flagged by the midpath check.

◆ num_never_started_

template<typename TrackerType, typename EndgameType, typename SystemType>
unsigned long long bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::num_never_started_ = 0
protectedinherited

Paths the last Solve() never began, because it stopped.

◆ num_recalled_

template<typename TrackerType, typename EndgameType, typename SystemType>
unsigned long long bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::num_recalled_ = 0
protectedinherited

Paths recalled from records in the last Solve().

◆ num_start_points_

template<typename TrackerType, typename EndgameType, typename SystemType>
unsigned long long bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::num_start_points_
protectedinherited

Number of start points the start system produces.

◆ path_prec_

template<typename TrackerType, typename EndgameType, typename SystemType>
tracking::PathPrecisionRecorder<TrackerType> bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::path_prec_
protectedinherited

observers used during tracking

Records the precision each path used, across all its tracks.

◆ recalling_

template<typename TrackerType, typename EndgameType, typename SystemType>
bool bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::recalling_ = false
protectedinherited

True while replaying recorded paths (suppresses re-emission).

◆ records_

template<typename TrackerType, typename EndgameType, typename SystemType>
std::shared_ptr<records::OutputDirectory> bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::records_
protectedinherited

The attached output directory (null = not recording).

◆ records_run_id_

template<typename TrackerType, typename EndgameType, typename SystemType>
std::string bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::records_run_id_
protectedinherited

This solve's run id in the records (ask hash prefix).

◆ records_run_resumed_

template<typename TrackerType, typename EndgameType, typename SystemType>
bool bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::records_run_resumed_ = false
protectedinherited

True when this ask's run header pre-existed (a re-ask: emit a recall event).

◆ records_start_identity_

template<typename TrackerType, typename EndgameType, typename SystemType>
std::string bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::records_start_identity_
protectedinherited

Identity of externally supplied start data (joins the ask); empty = starts derive from target+seed.

◆ records_start_refs_

template<typename TrackerType, typename EndgameType, typename SystemType>
std::vector<boost::json::object> bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::records_start_refs_
protectedinherited

Per-path start provenance (point_ref/given_ref); empty = canonical start labels.

◆ solution_final_metadata_

template<typename TrackerType, typename EndgameType, typename SystemType>
SolnCont<SolutionMetaDataT> bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::solution_final_metadata_
protectedinherited

Final per-solution metadata.

◆ solutions_at_endgame_boundary_

template<typename TrackerType, typename EndgameType, typename SystemType>
SolnCont< EGBoundaryMetaDataT > bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::solutions_at_endgame_boundary_
protectedinherited

computed data

Per-path state captured at the endgame boundary.

◆ solutions_post_endgame_

template<typename TrackerType, typename EndgameType, typename SystemType>
SolnCont<Vec<BaseComplexT> > bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::solutions_post_endgame_
protectedinherited

Solution points after the endgame (internal coordinates).

◆ solutions_user_coords_

template<typename TrackerType, typename EndgameType, typename SystemType>
SolnCont<Vec<BaseComplexT> > bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::solutions_user_coords_
mutableprotectedinherited

lazy cache for SolutionsUserCoords; serial post-solve access assumed

◆ solutions_user_coords_fresh_

template<typename TrackerType, typename EndgameType, typename SystemType>
bool bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::solutions_user_coords_fresh_ = false
mutableprotectedinherited

Whether the user-coordinate cache is up to date.

◆ solve_deadline_

template<typename TrackerType, typename EndgameType, typename SystemType>
std::optional<std::chrono::steady_clock::time_point> bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::solve_deadline_
protectedinherited

The whole-solve wall-clock deadline of the current Solve(), when one was asked for.

◆ start_point_precision_

template<typename TrackerType, typename EndgameType, typename SystemType>
unsigned bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::start_point_precision_ = DoublePrecision()
protectedinherited

precision at which start points are computed; defaults to initial ambient precision (see PreSolveSetup)

◆ start_point_precision_set_by_user_

template<typename TrackerType, typename EndgameType, typename SystemType>
bool bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::start_point_precision_set_by_user_ = false
protectedinherited

Whether the start-point precision was set explicitly by the user.

◆ start_system_

template<typename TrackerType, typename EndgameType, typename SystemType>
std::reference_wrapper<const StartSystemBaseT> bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::start_system_
protectedinherited

Reference to the caller-owned start system.

◆ stopped_early_

template<typename TrackerType, typename EndgameType, typename SystemType>
bool bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::stopped_early_ = false
protectedinherited

True when the last Solve() was asked to stop partway.

◆ target_system_

template<typename TrackerType, typename EndgameType, typename SystemType>
std::reference_wrapper<const SystemType> bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::target_system_
protectedinherited

Reference to the caller-owned target system.

◆ tracker_

template<typename TrackerType, typename EndgameType, typename SystemType>
TrackerType bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::tracker_
protectedinherited

function objects used during the algorithm

The path tracker.