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

forward declare of the NumericalIrreducibleDecomposition algorithm. More...

#include <numerical_irreducible_decomposition.hpp>

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

Public Types

using TrackerT = TrackerType
 The path-tracker type.
using EndgameT = EndgameType
 The endgame type.
using SystemT = SystemType
 The system 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 Config
 The Configured base storing this algorithm's configuration structs.
using Regeneration = RegenerationConfig
 Regeneration configuration type.
using Tolerances = TolerancesConfig
 Tolerances configuration type.
using Sharpening = SharpeningConfig
 Sharpening configuration type.
using PostProcessing = PostProcessingConfig
 Post-processing configuration type.
using ResultT = nag_datatype::NumericalIrreducibleDecomposition<BaseComplexT>
 The decomposition result type.
using UsedConfigs
 The list of configuration types this object holds.

Public Member Functions

const SystemType & TargetSystem () const
SystemType & TargetSystem ()
 NumericalIrreducibleDecomposition (SystemType const &target)
 constructors
virtual ~NumericalIrreducibleDecomposition ()=default
void Run () override
 the main functions
void Solve ()
 Perform the numerical irreducible decomposition.
ResultT RegenerativeCascade ()
 Run the regenerative cascade.
const ResultT & GetDecomposition () const
 Get the most recently computed decomposition.
const TrackerType & GetTracker () const
 tracker / endgame access
TrackerType & GetTracker ()
const EndgameType & GetEndgame () const
EndgameType & GetEndgame ()
void DefaultSetup ()
 setup functions
void DefaultSettingsSetup ()
 Fills the configs from default values.
void DefaultSystemSetup ()
 Homogenize and patch the owned target system to its default working form.
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.
virtual bool ObservableIsA (std::type_index t) const
 Whether this observable may be observed as the given type.

Public Attributes

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

Protected Member Functions

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).

Detailed Description

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

forward declare of the NumericalIrreducibleDecomposition algorithm.

The Numerical Irreducible Decomposition algorithm.

Unlike ZeroDim, NID has no start system – the regenerative cascade is a fundamentally different way of solving a polynomial system – so it carries no StartSystem template parameter. It owns a cloned target system directly (no system-management policy: this is placeholder scaffolding whose Solve() throws).

Note
This is framework scaffolding. The regenerative cascade itself is not yet implemented; the compute entry points (Run, Solve, RegenerativeCascade) currently throw. The class is fully wired for configuration (via detail::Configured and the NeededConfigs typelist) and observation, and exposes a Tracker and Endgame, so it slots into the existing Python config interface with no extra plumbing.

Member Typedef Documentation

◆ BaseComplexT

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

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::NumericalIrreducibleDecomposition< TrackerType, EndgameType, SystemType >::BaseRealT = typename tracking::TrackerTraits<TrackerType>::BaseRealT

The real number type of the tracker.

◆ Config

template<typename TrackerType, typename EndgameType, typename SystemType>
using bertini::algorithm::NumericalIrreducibleDecomposition< TrackerType, EndgameType, SystemType >::Config
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 algorithm's configuration structs.

◆ EndgameT

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

The endgame type.

◆ PostProcessing

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

Post-processing configuration type.

◆ Regeneration

template<typename TrackerType, typename EndgameType, typename SystemType>
using bertini::algorithm::NumericalIrreducibleDecomposition< TrackerType, EndgameType, SystemType >::Regeneration = RegenerationConfig

Regeneration configuration type.

◆ ResultT

template<typename TrackerType, typename EndgameType, typename SystemType>
using bertini::algorithm::NumericalIrreducibleDecomposition< TrackerType, EndgameType, SystemType >::ResultT = nag_datatype::NumericalIrreducibleDecomposition<BaseComplexT>

The decomposition result type.

◆ Sharpening

template<typename TrackerType, typename EndgameType, typename SystemType>
using bertini::algorithm::NumericalIrreducibleDecomposition< TrackerType, EndgameType, SystemType >::Sharpening = SharpeningConfig

Sharpening configuration type.

◆ SystemT

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

The system type.

◆ Tolerances

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

Tolerances configuration type.

◆ TrackerT

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

The path-tracker type.

◆ UsedConfigs

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

The list of configuration types this object holds.

Constructor & Destructor Documentation

◆ NumericalIrreducibleDecomposition()

template<typename TrackerType, typename EndgameType, typename SystemType>
bertini::algorithm::NumericalIrreducibleDecomposition< TrackerType, EndgameType, SystemType >::NumericalIrreducibleDecomposition ( SystemType const & target)
inline

constructors

Construct a NumericalIrreducibleDecomposition algorithm object from the system to be decomposed.

◆ ~NumericalIrreducibleDecomposition()

template<typename TrackerType, typename EndgameType, typename SystemType>
virtual bertini::algorithm::NumericalIrreducibleDecomposition< TrackerType, EndgameType, SystemType >::~NumericalIrreducibleDecomposition ( )
virtualdefault

Member Function Documentation

◆ 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).

◆ DefaultSettingsSetup()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::NumericalIrreducibleDecomposition< TrackerType, EndgameType, SystemType >::DefaultSettingsSetup ( )
inline

Fills the configs from default values.

◆ DefaultSetup()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::NumericalIrreducibleDecomposition< TrackerType, EndgameType, SystemType >::DefaultSetup ( )
inline

setup functions

◆ DefaultSystemSetup()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::NumericalIrreducibleDecomposition< TrackerType, EndgameType, SystemType >::DefaultSystemSetup ( )
inline

Homogenize and patch the owned target system to its default working form.

◆ 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
inline

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

◆ GetDecomposition()

template<typename TrackerType, typename EndgameType, typename SystemType>
const ResultT & bertini::algorithm::NumericalIrreducibleDecomposition< TrackerType, EndgameType, SystemType >::GetDecomposition ( ) const
inline

Get the most recently computed decomposition.

◆ GetEndgame() [1/2]

template<typename TrackerType, typename EndgameType, typename SystemType>
EndgameType & bertini::algorithm::NumericalIrreducibleDecomposition< TrackerType, EndgameType, SystemType >::GetEndgame ( )
inline
Returns
The endgame used by the algorithm.

◆ GetEndgame() [2/2]

template<typename TrackerType, typename EndgameType, typename SystemType>
const EndgameType & bertini::algorithm::NumericalIrreducibleDecomposition< TrackerType, EndgameType, SystemType >::GetEndgame ( ) const
inline
Returns
The endgame used by the algorithm.

◆ GetTracker() [1/2]

template<typename TrackerType, typename EndgameType, typename SystemType>
TrackerType & bertini::algorithm::NumericalIrreducibleDecomposition< TrackerType, EndgameType, SystemType >::GetTracker ( )
inline
Returns
The path tracker used by the algorithm.

◆ GetTracker() [2/2]

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

tracker / endgame access

Returns
The path tracker used by the algorithm.

◆ 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.

◆ 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.

◆ ObservableIsA()

virtual bool bertini::Observable::ObservableIsA ( std::type_index t) const
inlinevirtualinherited

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 in bertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >, and bertini::algorithm::HomotopySolver< A, B, C >.

◆ RegenerativeCascade()

template<typename TrackerType, typename EndgameType, typename SystemType>
ResultT bertini::algorithm::NumericalIrreducibleDecomposition< TrackerType, EndgameType, SystemType >::RegenerativeCascade ( )
inline

Run the regenerative cascade.

Note
Not yet implemented – this is framework scaffolding.

◆ 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.

◆ Run()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::NumericalIrreducibleDecomposition< TrackerType, EndgameType, SystemType >::Run ( )
inlineoverridevirtual

the main functions

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

Implements bertini::algorithm::AnyAlgorithm.

◆ Set()

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

Set the held configuration object of type T.

◆ Solve()

template<typename TrackerType, typename EndgameType, typename SystemType>
void bertini::algorithm::NumericalIrreducibleDecomposition< TrackerType, EndgameType, SystemType >::Solve ( )
inline

Perform the numerical irreducible decomposition.

Note
Not yet implemented – this is framework scaffolding.

◆ TargetSystem() [1/2]

template<typename TrackerType, typename EndgameType, typename SystemType>
SystemType & bertini::algorithm::NumericalIrreducibleDecomposition< TrackerType, EndgameType, SystemType >::TargetSystem ( )
inline
Returns
The target system being decomposed.

◆ TargetSystem() [2/2]

template<typename TrackerType, typename EndgameType, typename SystemType>
const SystemType & bertini::algorithm::NumericalIrreducibleDecomposition< TrackerType, EndgameType, SystemType >::TargetSystem ( ) const
inline
Returns
The target system being decomposed.

Member Data Documentation

◆ configuration_

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

The held configuration objects, one per config type.