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

Owns and builds the target / start system / homotopy for a zero-dim solve. More...

#include <zero_dim_solve.hpp>

Inheritance diagram for bertini::algorithm::zero_dim_detail::OwnedHomotopy< SystemType >:
[legend]

Public Types

using StartSystemBaseT = bertini::start_system::StartSystem
 The start-system base type.
using FactoryT = bertini::start_system::StartSystemFactory<SystemType>
 The start-system factory type.

Public Member Functions

 OwnedHomotopy (SystemType const &target, FactoryT factory, std::string const &path_variable_name)
 Build and own the target, start system, and homotopy from a target system and factory.
SystemType const & BuiltTarget () const
SystemType const & UserTarget () const
StartSystemBaseT const & BuiltStart () const
SystemType const & BuiltHomotopy () const

Protected Member Functions

void ConsistencyCheck () const
 Reject targets that cannot have isolated solutions for structural reasons.
void SquareUp ()
 If the target is over-determined (more equations than the affine dimension), replace it with n generic combinations (System::Randomize) so a start system can track it.
void RankCheck () const
 Reject a square target whose solution set is still positive-dimensional.

Static Protected Member Functions

static void PrepareTarget (SystemType &target)
 Homogenize and auto-patch the (already square) target system in place.

Protected Attributes

SystemType user_target_
 The target exactly as supplied (pristine; the records' target identity).
SystemType owned_target_
 The owned (cloned, prepared) target system.
std::shared_ptr< StartSystemBaseT > owned_start_
 The owned start system.
SystemType owned_homotopy_
 The owned homotopy.
FactoryT owned_factory_
 The start-system factory used to build the start system.
bool was_randomized_ = false
 Whether an over-determined target was squared up by randomization.
SystemType original_natural_target_
 The original (natural, un-homogenized) target, kept to discard extraneous solutions.
Mat< complex_mp > randomization_matrix_
 The exact coefficient matrix used to square up the system.

Detailed Description

template<typename SystemType>
struct bertini::algorithm::zero_dim_detail::OwnedHomotopy< SystemType >

Owns and builds the target / start system / homotopy for a zero-dim solve.

Constructed as the FIRST base of ZeroDimSolver – before the HomotopySolver engine base, which holds references into these systems – so the homotopy is fully formed before the engine reads it. This holds the system-building half of the algorithm, plus the feasibility / rank checks the algorithm owns. Members carry an owned_ prefix so they do not collide with the engine base's reference members.

Member Typedef Documentation

◆ FactoryT

template<typename SystemType>
using bertini::algorithm::zero_dim_detail::OwnedHomotopy< SystemType >::FactoryT = bertini::start_system::StartSystemFactory<SystemType>

The start-system factory type.

◆ StartSystemBaseT

template<typename SystemType>
using bertini::algorithm::zero_dim_detail::OwnedHomotopy< SystemType >::StartSystemBaseT = bertini::start_system::StartSystem

The start-system base type.

Constructor & Destructor Documentation

◆ OwnedHomotopy()

template<typename SystemType>
bertini::algorithm::zero_dim_detail::OwnedHomotopy< SystemType >::OwnedHomotopy ( SystemType const & target,
FactoryT factory,
std::string const & path_variable_name )
inline

Build and own the target, start system, and homotopy from a target system and factory.

Member Function Documentation

◆ BuiltHomotopy()

template<typename SystemType>
SystemType const & bertini::algorithm::zero_dim_detail::OwnedHomotopy< SystemType >::BuiltHomotopy ( ) const
inline
Returns
The built homotopy.

◆ BuiltStart()

template<typename SystemType>
StartSystemBaseT const & bertini::algorithm::zero_dim_detail::OwnedHomotopy< SystemType >::BuiltStart ( ) const
inline
Returns
The built start system.

◆ BuiltTarget()

template<typename SystemType>
SystemType const & bertini::algorithm::zero_dim_detail::OwnedHomotopy< SystemType >::BuiltTarget ( ) const
inline
Returns
The built (cloned, prepared) target system.

◆ ConsistencyCheck()

template<typename SystemType>
void bertini::algorithm::zero_dim_detail::OwnedHomotopy< SystemType >::ConsistencyCheck ( ) const
inlineprotected

Reject targets that cannot have isolated solutions for structural reasons.

◆ PrepareTarget()

template<typename SystemType>
void bertini::algorithm::zero_dim_detail::OwnedHomotopy< SystemType >::PrepareTarget ( SystemType & target)
inlinestaticprotected

Homogenize and auto-patch the (already square) target system in place.

Parameters
targetThe target system to prepare.

◆ RankCheck()

template<typename SystemType>
void bertini::algorithm::zero_dim_detail::OwnedHomotopy< SystemType >::RankCheck ( ) const
inlineprotected

Reject a square target whose solution set is still positive-dimensional.

ConsistencyCheck only counts equations; a system can be square yet positive-dimensional (e.g. a repeated equation). At a generic point a zero-dimensional system has a full-rank n x n Jacobian, so a rank-deficient Jacobian there means no isolated solutions. Runs only when the (natural, pre-homogenize) system is square; projective/structured inputs whose Jacobian is not n x n are left to ConsistencyCheck.

◆ SquareUp()

template<typename SystemType>
void bertini::algorithm::zero_dim_detail::OwnedHomotopy< SystemType >::SquareUp ( )
inlineprotected

If the target is over-determined (more equations than the affine dimension), replace it with n generic combinations (System::Randomize) so a start system can track it.

The randomized system's isolated solutions contain the original's plus extraneous ones; the original system is kept (original_natural_target_) so ZeroDimSolver can filter those out.

◆ UserTarget()

template<typename SystemType>
SystemType const & bertini::algorithm::zero_dim_detail::OwnedHomotopy< SystemType >::UserTarget ( ) const
inline
Returns
The target exactly as the USER supplied it: pristine – never squared, homogenized, or patched. The records name THIS system as the ask's target (you asked about your system; the prepared one actually tracked lives, complete, inside the archived homotopy).

Member Data Documentation

◆ original_natural_target_

template<typename SystemType>
SystemType bertini::algorithm::zero_dim_detail::OwnedHomotopy< SystemType >::original_natural_target_
protected

The original (natural, un-homogenized) target, kept to discard extraneous solutions.

◆ owned_factory_

template<typename SystemType>
FactoryT bertini::algorithm::zero_dim_detail::OwnedHomotopy< SystemType >::owned_factory_
protected

The start-system factory used to build the start system.

◆ owned_homotopy_

template<typename SystemType>
SystemType bertini::algorithm::zero_dim_detail::OwnedHomotopy< SystemType >::owned_homotopy_
protected

The owned homotopy.

◆ owned_start_

template<typename SystemType>
std::shared_ptr<StartSystemBaseT> bertini::algorithm::zero_dim_detail::OwnedHomotopy< SystemType >::owned_start_
protected

The owned start system.

◆ owned_target_

template<typename SystemType>
SystemType bertini::algorithm::zero_dim_detail::OwnedHomotopy< SystemType >::owned_target_
protected

The owned (cloned, prepared) target system.

◆ randomization_matrix_

template<typename SystemType>
Mat<complex_mp> bertini::algorithm::zero_dim_detail::OwnedHomotopy< SystemType >::randomization_matrix_
protected

The exact coefficient matrix used to square up the system.

◆ user_target_

template<typename SystemType>
SystemType bertini::algorithm::zero_dim_detail::OwnedHomotopy< SystemType >::user_target_
protected

The target exactly as supplied (pristine; the records' target identity).

◆ was_randomized_

template<typename SystemType>
bool bertini::algorithm::zero_dim_detail::OwnedHomotopy< SystemType >::was_randomized_ = false
protected

Whether an over-determined target was squared up by randomization.