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

Detects whether any solution paths crossed during tracking, before the endgame. More...

#include <midpath_check.hpp>

Inheritance diagram for bertini::algorithm::MidpathChecker< RealT, ComplexT, MetaDataType >:
[legend]
Collaboration diagram for bertini::algorithm::MidpathChecker< RealT, ComplexT, MetaDataType >:
[legend]

Classes

struct  CrossedPath
 Stores data for each path that crosses, including the index of the path, all paths that it crosses with, and whether it has the same starting point as a path it crosses with. More...

Public Types

using MidPathConfT = MidPathConfig
 The configuration type this checker reads.
using AlgConf = detail::Configured<MidPathConfig>
 The Configured base alias.
using BoundaryData = SolnCont< MetaDataType >
 Container of solution data at the endgame boundary.
using PathIndT = unsigned long long
 Integer type indexing solution paths.
using UsedConfigs
 The list of configuration types this object holds.

Public Member Functions

 MidpathChecker ()=default
template<typename ... T>
 MidpathChecker (T const &...config)
 Construct a MidpathChecker, given the system it is checking, and the tolerance which should be used to tell whether two points are the same.
bool Passed () const
const auto & SamePointTol () const
template<typename StartSystemT>
bool Check (BoundaryData const &boundary_data, StartSystemT const &start_system)
 Checks the solution data at the endgame boundary to see if any paths have crossed during tracking before the endgame.
const std::vector< CrossedPath > GetCrossedPaths () const
const T & Get () const
 Get the held configuration object of type T.
void Set (T const &t)
 Set the held configuration object of type T.

Public Attributes

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

Detailed Description

template<typename RealT, typename ComplexT, typename MetaDataType>
struct bertini::algorithm::MidpathChecker< RealT, ComplexT, MetaDataType >

Detects whether any solution paths crossed during tracking, before the endgame.

Compares the solution points at the endgame boundary (with a relaxed tolerance) and records the paths that coincide, so the caller can rerun the offending paths.

Template Parameters
RealTThe real number type.
ComplexTThe complex number type.
MetaDataTypeThe per-solution metadata type carried in the boundary data.

Member Typedef Documentation

◆ AlgConf

template<typename RealT, typename ComplexT, typename MetaDataType>
using bertini::algorithm::MidpathChecker< RealT, ComplexT, MetaDataType >::AlgConf = detail::Configured<MidPathConfig>

The Configured base alias.

◆ BoundaryData

template<typename RealT, typename ComplexT, typename MetaDataType>
using bertini::algorithm::MidpathChecker< RealT, ComplexT, MetaDataType >::BoundaryData = SolnCont< MetaDataType >

Container of solution data at the endgame boundary.

◆ MidPathConfT

template<typename RealT, typename ComplexT, typename MetaDataType>
using bertini::algorithm::MidpathChecker< RealT, ComplexT, MetaDataType >::MidPathConfT = MidPathConfig

The configuration type this checker reads.

◆ PathIndT

template<typename RealT, typename ComplexT, typename MetaDataType>
using bertini::algorithm::MidpathChecker< RealT, ComplexT, MetaDataType >::PathIndT = unsigned long long

Integer type indexing solution paths.

◆ UsedConfigs

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

The list of configuration types this object holds.

Constructor & Destructor Documentation

◆ MidpathChecker() [1/2]

template<typename RealT, typename ComplexT, typename MetaDataType>
bertini::algorithm::MidpathChecker< RealT, ComplexT, MetaDataType >::MidpathChecker ( )
default

◆ MidpathChecker() [2/2]

template<typename RealT, typename ComplexT, typename MetaDataType>
template<typename ... T>
bertini::algorithm::MidpathChecker< RealT, ComplexT, MetaDataType >::MidpathChecker ( T const &... config)
inline

Construct a MidpathChecker, given the system it is checking, and the tolerance which should be used to tell whether two points are the same.

Note
The tolerance should be relaxed compared to the tracking tolerance used to compute these points.

Member Function Documentation

◆ Check()

template<typename RealT, typename ComplexT, typename MetaDataType>
template<typename StartSystemT>
bool bertini::algorithm::MidpathChecker< RealT, ComplexT, MetaDataType >::Check ( BoundaryData const & boundary_data,
StartSystemT const & start_system )
inline

Checks the solution data at the endgame boundary to see if any paths have crossed during tracking before the endgame.

Template Parameters
StartSystemTThe start system type.
Parameters
boundary_dataSolution data at the endgame boundary.
start_systemThe start system used for tracking.
Returns
True if no paths crossed during tracking, false otherwise.

◆ Get()

const T & bertini::detail::Configured< Ts >::Get ( ) const
inlineinherited

Get the held configuration object of type T.

◆ GetCrossedPaths()

template<typename RealT, typename ComplexT, typename MetaDataType>
const std::vector< CrossedPath > bertini::algorithm::MidpathChecker< RealT, ComplexT, MetaDataType >::GetCrossedPaths ( ) const
inline
Returns
The list of paths found to have crossed.

◆ Passed()

template<typename RealT, typename ComplexT, typename MetaDataType>
bool bertini::algorithm::MidpathChecker< RealT, ComplexT, MetaDataType >::Passed ( ) const
inline
Returns
True if no paths crossed (the check passed).

◆ SamePointTol()

template<typename RealT, typename ComplexT, typename MetaDataType>
const auto & bertini::algorithm::MidpathChecker< RealT, ComplexT, MetaDataType >::SamePointTol ( ) const
inline
Returns
The tolerance below which two points are considered the same.

◆ Set()

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

Set the held configuration object of type T.

Member Data Documentation

◆ configuration_

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

The held configuration objects, one per config type.