| Cbertini::tracking::AdaptiveMultiplePrecisionConfig | Holds the program parameters with respect to Adaptive Multiple Precision |
| Cbertini::blackbox::AlgoBuilder | A de-serializer, whose responsibility it is to construct runnable objects based on input files |
| CAlgorithmEvent | |
| Cbertini::algorithm::PathComplete< ObservedT > | The algorithm has finished work on one solution path, carrying its index |
| Cbertini::algorithm::PathStarted< ObservedT > | The algorithm is beginning work on one solution path, carrying its index |
| Cbertini::algorithm::AlgorithmMetaData | Metadata structs |
| Cbertini::algorithm::AlgoTraits< T > | |
| Cbertini::endgame::AlgoTraits< T > | |
| Cbertini::endgame::AlgoTraits< CauchyEndgame< PrecT > > | Specialization for Cauchy, which uses CRTP |
| Cbertini::algorithm::AlgoTraits< HomotopySolver< TrackerType, EndgameType, SystemType > > | Specify the traits for the algorithm |
| Cbertini::algorithm::AlgoTraits< NumericalIrreducibleDecomposition< TrackerType, EndgameType, SystemType > > | Specify the traits for the algorithm |
| Cbertini::endgame::AlgoTraits< PowerSeriesEndgame< PrecT > > | Specialization for PowerSeries, which uses CRTP |
| Cbertini::algorithm::output::AllSolutions | Extracts all solutions from a solver's results |
| Cbertini::AnyEvent | Strawman Event type, enabling polymorphism |
| Cbertini::Event< ObsT, false > | For emission of events from observables |
| Cbertini::Event< ObsT, true > | For emission of events from observables |
| Cbertini::AnyObserver | Strawman base class for Observer objects |
| Cbertini::Observer< EndgameT > | |
| Cbertini::endgame::EventRecorder< EndgameT > | Counts endgame events and captures their payloads, for tests and diagnostics |
| Cbertini::endgame::GoryDetailLogger< EndgameT > | Logs the endgame run, with gory detail |
| Cbertini::endgame::SampleSequenceCollector< EndgameT > | Collects an endgame's approach to the root as a time-indexed sequence, for callers that need to watch a quantity BEHAVE as the point improves rather than judge it at a single point |
| Cbertini::Observer< TrackerT > | |
| Cbertini::TypedObserver< AMPPathAccumulator< TrackerT, SuccessfulStep >, TrackerT, SuccessfulStep< TrackerTraits< TrackerT >::EventEmitterType > > | |
| Cbertini::tracking::AMPPathAccumulator< TrackerT, EventT > | Example usage: PathAccumulator<AMPTracker> path_accumulator; |
| Cbertini::TypedObserver< FirstPrecisionRecorder< TrackerT >, TrackerT, Initializing< TrackerTraits< TrackerT >::EventEmitterType, TrackerTraits< TrackerT >::BaseComplexT >, TrackingStarted< TrackerTraits< TrackerT >::EventEmitterType >, PrecisionChanged< TrackerTraits< TrackerT >::EventEmitterType > > | |
| Cbertini::tracking::FirstPrecisionRecorder< TrackerT > | Observer that records the starting precision and the first precision increase of each track: each call to TrackPath, from its start |
| Cbertini::TypedObserver< MinMaxPrecisionRecorder< TrackerT >, TrackerT, Initializing< TrackerTraits< TrackerT >::EventEmitterType, TrackerTraits< TrackerT >::BaseComplexT >, TrackingStarted< TrackerTraits< TrackerT >::EventEmitterType >, PrecisionChanged< TrackerTraits< TrackerT >::EventEmitterType > > | |
| Cbertini::tracking::MinMaxPrecisionRecorder< TrackerT > | Observer that records the minimum and maximum precision of each track: each call to TrackPath, from its start |
| Cbertini::TypedObserver< PathPrecisionRecorder< TrackerT >, TrackerT, TrackingStarted< TrackerTraits< TrackerT >::EventEmitterType >, PrecisionChanged< TrackerTraits< TrackerT >::EventEmitterType > > | |
| Cbertini::tracking::PathPrecisionRecorder< TrackerT > | Observer that records the precision a whole path used, across every call to TrackPath that tracks it: the track to the endgame boundary and every endgame sub-track |
| Cbertini::TypedObserver< StepFailScreenPrinter< TrackerT >, TrackerT, FailedStep< TrackerTraits< TrackerT >::EventEmitterType > > | |
| Cbertini::tracking::StepFailScreenPrinter< TrackerT > | Observer that prints a message to standard out whenever a step fails |
| Cbertini::tracking::GoryDetailLogger< TrackerT > | Observer that logs verbose ("gory detail") diagnostics for every tracking event |
| Cbertini::tracking::PrecisionAccumulator< TrackerT > | Observer that collects the precision at every tracking event into a vector |
| Cbertini::Observer< TrackerType > | |
| Cbertini::TypedObserver< PathPrecisionRecorder< TrackerType >, TrackerType, TrackingStarted< TrackerTraits< TrackerType >::EventEmitterType >, PrecisionChanged< TrackerTraits< TrackerType >::EventEmitterType > > | |
| Cbertini::tracking::PathPrecisionRecorder< TrackerType > | |
| Cbertini::Observer< ObservedT > | Actual observer type, which you should derive from to extract custom information from observable types |
| Cbertini::MultiObserver< ObservedT, ObserverTypes > | A class which can glob together observer types into a new, single observer type |
| Cbertini::TypedObserver< Derived, ObservedT, ConcreteEvents > | CRTP base that turns an observer into a set of typed Observe() overloads |
| Cbertini::detail::AreValidArguments< bool > | |
| Cbertini::algorithm::AutoRetrackConfig | Configuration for auto-retracking paths flagged as crossed |
| Cbertini::blocks::BlendBlock< SystemT > | A block forming the blend (coupling homotopy) H = sum_i c_i(t) * operand_i of several systems |
| Cbertini::endgame::CauchyConfig | Cauchy-endgame configuration |
| Cbertini::algorithm::output::Classic< T > | |
| Cbertini::generators::Classic | Generators emitting numbers and vectors in classic Bertini format (real then imaginary) |
| Cbertini::algorithm::output::Classic< HomotopySolver< A, B, C > > | Writes a solver's results in the classic Bertini output format |
| Cbertini::algorithm::output::Classic< ZeroDimSolver< A, B, C > > | |
| Cbertini::classic::ClassicWriteOptions | Tracking / precision settings to emit in the CONFIG section, in Bertini 1 terms |
| Cbertini::parsing::classic::ConfigParser< Ts > | Base variadic parser for parsing many config structs at once |
| Cbertini::parsing::classic::ConfigParser< ConfigT > | Specialization of ConfigParser for a single config struct |
| Cbertini::parsing::classic::ConfigParser< detail::TypeList< Ts... > > | Specialization of ConfigParser for a typelist, returning a thing passed down from the base variadic case |
| Cbertini::blackbox::config::Configs | Bundles of configuration types, as TypeLists, grouped by solve stage |
| Cbertini::detail::Configured< Ts > | This templated struct allows one to provide a variable typelist of config structs (or anything else for that matter), and provides a way to get and set these configs by looking up the structs by type |
| Cbertini::algorithm::HomotopySolver< A, B, C > | |
| Cbertini::endgame::EndgameBase< CauchyEndgame< PrecT >, PrecT > | |
| Cbertini::endgame::CauchyEndgame< PrecT > | Class used to finish tracking paths during Homotopy Continuation |
| Cbertini::endgame::EndgameBase< PowerSeriesEndgame< PrecT >, PrecT > | |
| Cbertini::endgame::PowerSeriesEndgame< PrecT > | Class used to finish tracking paths during Homotopy Continuation |
| Cbertini::tracking::Tracker< AMPTracker > | |
| Cbertini::tracking::AMPTracker | Functor-like class for tracking paths on a system |
| Cbertini::tracking::Tracker< FixedPrecisionTracker< DerivedT > > | |
| Cbertini::tracking::FixedPrecisionTracker< DerivedT > | CRTP base for trackers that work at a single fixed precision (double or fixed multiple) |
| Cbertini::detail::Configured< AlgoTraits< FlavorT >::NeededConfigs > | |
| Cbertini::endgame::EndgameBase< FlavorT, PrecT > | Base endgame class for all endgames offered in Bertini2 |
| Cbertini::endgame::CauchyEndgame< EGPrecT > | |
| Cbertini::endgame::PowerSeriesEndgame< EGPrecT > | |
| Cbertini::detail::Configured< AlgoTraits< HomotopySolver< TrackerType, EndgameType, SystemType > >::NeededConfigs > | |
| Cbertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType > | The continuation primitive: given a homotopy + a source of start points, track each path through the tracker and endgame, resolve crossings, classify the endpoints, and report |
| Cbertini::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 |
| Cbertini::detail::Configured< AlgoTraits< NumericalIrreducibleDecomposition< TrackerType, EndgameType, SystemType > >::NeededConfigs > | |
| Cbertini::algorithm::NumericalIrreducibleDecomposition< TrackerType, EndgameType, SystemType > | Forward declare of the NumericalIrreducibleDecomposition algorithm |
| Cbertini::detail::Configured< Configs::All< bertini::complex_dbl >, Configs::All< bertini::complex_mp > > | |
| Cbertini::blackbox::config::Defaults | |
| Cbertini::detail::Configured< MidPathConfig > | |
| Cbertini::algorithm::MidpathChecker< BaseRealT, BaseComplexT, EGBoundaryMetaData< BaseComplexT > > | |
| Cbertini::algorithm::MidpathChecker< RealT, ComplexT, MetaDataType > | Detects whether any solution paths crossed during tracking, before the endgame |
| Cbertini::detail::Configured< TrackerTraits< D >::NeededConfigs > | |
| Cbertini::tracking::Tracker< D > | Base tracker class for trackers offered in Bertini2 |
| Cbertini::tracking::FixedPrecisionTracker< MultiplePrecisionTracker > | |
| Cbertini::tracking::MultiplePrecisionTracker | A tracker that works at a fixed multiprecision (set from the default precision at construction) |
| Cbertini::detail::Configured< TrackerTraits< FixedPrecisionTracker< DoublePrecisionTracker > >::NeededConfigs > | |
| Cbertini::tracking::Tracker< FixedPrecisionTracker< DoublePrecisionTracker > > | |
| Cbertini::tracking::FixedPrecisionTracker< DoublePrecisionTracker > | |
| Cbertini::tracking::DoublePrecisionTracker | A tracker that works entirely in hardware double precision |
| Cbertini::detail::Configured< Ts... > | |
| Cbertini::detail::Configured< TypeList< Ts... > > | Configured specialization accepting the config types packaged in a TypeList |
| Cbertini::ConstantRecipe | An exact, node-independent description of a constant baked into the program: enough to (re)produce the constant's value at any working precision, without evaluating a function-tree node (ADR-0027; node evaluation is being retired) |
| Cbertini::nag_datatype::policy::Copy< T > | Storage policy that holds objects by value (a copy) |
| Cbertini::generators::CPlusPlus | Generators emitting numbers in C++ source literal format |
| Cbertini::algorithm::MidpathChecker< RealT, ComplexT, MetaDataType >::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 |
| Cbertini::node::DecodingContext | The back-reference table of one decoding pass: the nodes in first-encounter order, so #<index> resolves to the node the encoder numbered index |
| Cbertini::node::DecodingCursor | A read position over one canonical-encoding text, with the small lexical helpers the grammar needs (literals, words, netstrings, numbers) |
| Cbertini::detail::DefaultConstruct< T > | Holds a default-constructed value of T, used to fill arguments not present when unpermuting |
| Cbertini::policy::DefaultConstruct< VisitedT, RetT > | A policy for what to do when a visited type is encoutered by a visitor it doesn't know |
| Cbertini::detail::Digest256 | A 256-bit content digest – the output of Sha256, used as a persistent identity key |
| Cbertini::records::DrawStream | A deterministic, fully-specified random stream (SHA-256 counter mode) |
| Cbertini::algorithm::EGBoundaryMetaData< ComplexT > | State captured at the endgame boundary, handed off to start the endgame |
| Cbertini::endgame::EGPrecSelector< TrackerT > | Base empty class |
| Cbertini::endgame::EGPrecSelector< tracking::AMPTracker > | Selects the AMP endgame precision policy for the adaptive-precision tracker |
| Cbertini::endgame::EGPrecSelector< tracking::DoublePrecisionTracker > | Selects the fixed-precision endgame policy for the double-precision tracker |
| Cbertini::endgame::EGPrecSelector< tracking::FixedPrecisionTracker< D > > | Selects the fixed-precision endgame policy for a fixed-precision tracker |
| Cbertini::endgame::EGPrecSelector< tracking::MultiplePrecisionTracker > | Selects the fixed-precision endgame policy for the multiple-precision tracker |
| Cstd::enable_shared_from_this | |
| Cbertini::node::Node | An interface for all nodes in a function tree, and for a function object as well |
| Cbertini::node::Operator | Abstract Node type from which all Operators inherit |
| Cbertini::node::NaryOperator | Abstract interface for n-ary Operator types |
| Cbertini::node::MultOperator | Multiplication and division Operator |
| Cbertini::node::SumOperator | Represents summation and difference Operator |
| Cbertini::node::PowerOperator | Operator for power functions with arbitrary expressions in the exponent and base |
| Cbertini::node::UnaryOperator | Interface for all unary Operator types |
| Cbertini::node::ExpOperator | Exponential function |
| Cbertini::node::IntegerPowerOperator | This class represents the exponentiation Operator |
| Cbertini::node::LogOperator | Natural logarithm function |
| Cbertini::node::NegateOperator | The negation Operator |
| Cbertini::node::SqrtOperator | Represents the square root Operator |
| Cbertini::node::TrigOperator | Abstract class for trigonometric Operator types |
| Cbertini::node::ArcCosOperator | Provides the arc cosine Operator |
| Cbertini::node::ArcSinOperator | Provides the inverse sine Operator |
| Cbertini::node::ArcTanOperator | Provides the inverse tangent Operator |
| Cbertini::node::CosOperator | Provides the cosine Operator |
| Cbertini::node::SinOperator | Provides the sine Operator |
| Cbertini::node::TanOperator | Provides the tangent Operator |
| Cbertini::node::Symbol | Abstract symbol class |
| Cbertini::node::NamedSymbol | Symbols which have names are named symbols |
| Cbertini::node::Differential | Provides the differential type for differentiation of expression trees |
| Cbertini::node::NamedExpression | A user-named expression — the surviving, immutable entry point into a subtree |
| Cbertini::node::Variable | Represents variable leaves in the function tree |
| Cbertini::node::Number | Abstract Number type from which other Numbers derive |
| Cbertini::node::Complex | A complex-number literal node in an expression tree |
| Cbertini::node::Integer | Signed real Integer storage in an expression tree |
| Cbertini::node::Rational | The Rational number type for Bertini2 expression trees |
| Cbertini::node::special_number::E | The number |
| Cbertini::node::special_number::Pi | The number |
| Cbertini::node::EncodingContext | Traversal state for one canonical-encoding pass: the back-reference table |
| Cbertini::algorithm::classic::EndgameChoiceConfig | Selects which endgame to use (classic input) |
| Cbertini::endgame::EndgameConfig | Configuration common to all endgames (sampling and final-approximation tolerances) |
| CEndgameEvent | |
| Cbertini::endgame::CircleAdvanced< ObservedT > | Advanced around the circle around target time |
| Cbertini::endgame::ComputedSamplePoint< ObservedT > | A new sample point on the path was computed, adding one point to the sequence of the endgame's approach to the target time |
| Cbertini::endgame::PrecisionChanged< ObservedT > | Event emitted when the endgame's working precision changes |
| Cbertini::endgame::EndgameSelector< TrackerT > | Facilitates lookup of required endgame type based on tracker type |
| Cbertini::Event< ObsT, IsConst > | |
| Cbertini::tracking::predict::ExplicitRKPredictor | A class which stores all the explicit single-step multi-stage ODE predictor methods |
| Cmpl::false_ | |
| Cboost::multiprecision::is_compatible_arithmetic_type< double, number< Backend > > | |
| Cboost::multiprecision::is_compatible_arithmetic_type< mpq_rational, number< Backend > > | |
| Cstd::false_type | |
| Cbertini::blocks::is_block< B, std::void_t< decltype(std::declval< const B & >().NumFunctions()), decltype(std::declval< const B & >().DependsOnPathVariable()), decltype(std::declval< const B & >().Precision()), decltype(std::declval< const B & >().Precision(0u)), decltype(std::declval< const B & >().Degrees()), decltype(std::declval< const B & >().Degrees(std::declval< VariableGroup const & >())), decltype(std::declval< const B & >().IsHomogeneous(std::declval< VariableGroup const & >())), decltype(std::declval< const B & >().IsPolynomial(std::declval< VariableGroup const & >())), decltype(std::declval< B & >().Homogenize(std::declval< VariableGroup const & >(), std::declval< std::shared_ptr< node::Variable > const & >())), decltype(std::declval< const B & >().template EvalInPlace< complex_dbl >(std::declval< Eigen::Ref< Vec< complex_dbl > > >(), std::declval< Vec< complex_dbl > const & >(), std::declval< complex_dbl const & >())), decltype(std::declval< const B & >().template JacobianInPlace< complex_dbl >(std::declval< Eigen::Ref< Mat< complex_dbl > > >(), std::declval< Vec< complex_dbl > const & >(), std::declval< complex_dbl const & >())), decltype(std::declval< const B & >().template TimeDerivInPlace< complex_dbl >(std::declval< Eigen::Ref< Vec< complex_dbl > > >(), std::declval< Vec< complex_dbl > const & >(), std::declval< complex_dbl const & >()))> > | |
| Cbertini::blocks::is_block< typename, typename > | Detection trait: does B satisfy the evaluation-block contract? |
| Cbertini::tracking::FixedPrecisionConfig | Settings for a fixed-precision tracker (carries the single working precision in effect) |
| Cbertini::parallel::FullPathResult< ComplexT > | Result of executing one WHOLE path: start -> endgame boundary -> target |
| Cqi::grammar | |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, AdaptiveMultiplePrecisionConfig, Skipper > | Parser for the AdaptiveMultiplePrecisionConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, FixedPrecisionConfig, Skipper > | As of this writing, there are no meaningful settings in FixedPrecisionConfig, so this parser is ... empty |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, NewtonConfig, Skipper > | Parser for the NewtonConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, PrecisionType, Skipper > | Qi Parser object for parsing config settings This ensures we can provide backwards compatibility with Bertini Classic input files |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, Predictor, Skipper > | Parser for the Predictor settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, SteppingConfig, Skipper > | Parser for the SteppingConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, TrackerConfig, Skipper > | The tracker's own settings, from a classic input file |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, algorithm::AutoRetrackConfig, Skipper > | Parser for the AutoRetrackConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, algorithm::MidPathConfig, Skipper > | Parser for the MidPathConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, algorithm::PostProcessingConfig, Skipper > | Parser for the PostProcessingConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, algorithm::RandomConfig, Skipper > | Parser for the RandomConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, algorithm::RecordsConfig, Skipper > | Parser for RecordsConfig: the classic input format has no keyword for it, so this consumes the config text and leaves the defaults |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, algorithm::RegenerationConfig, Skipper > | Parser for the RegenerationConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, algorithm::SharpeningConfig, Skipper > | Parser for the SharpeningConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, algorithm::TolerancesConfig, Skipper > | Parser for the TolerancesConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, algorithm::ZeroDimConfig, Skipper > | Parser for the ZeroDimConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, algorithm::classic::AlgoChoice, Skipper > | Parser for the AlgoChoice settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, algorithm::classic::EndgameChoiceConfig, Skipper > | Parser for the EndgameChoiceConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, bertini::endgame::CauchyConfig, Skipper > | Parser for the CauchyConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, bertini::endgame::EndgameConfig, Skipper > | Parser for the EndgameConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, bertini::endgame::PowerSeriesConfig, Skipper > | Parser for the PowerSeriesConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, bertini::endgame::SecurityConfig, Skipper > | Parser for the SecurityConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, bertini::endgame::TrackBackConfig, Skipper > | Parser for the TrackBackConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::CommentStripper< Iterator, Skipper > | Qi Parser object for removing comments from a line of text and then returns the uncommented line |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, Structure, Skipper > | Qi Parser object for parsing config settings This ensures we can provide backwards compatibility with Bertini Classic input files |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, AdaptiveMultiplePrecisionConfig, Skipper > | Parser for the AdaptiveMultiplePrecisionConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, FixedPrecisionConfig, Skipper > | As of this writing, there are no meaningful settings in FixedPrecisionConfig, so this parser is ... empty |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, NewtonConfig, Skipper > | Parser for the NewtonConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, PrecisionType, Skipper > | Qi Parser object for parsing config settings This ensures we can provide backwards compatibility with Bertini Classic input files |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, Predictor, Skipper > | Parser for the Predictor settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, SteppingConfig, Skipper > | Parser for the SteppingConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, TrackerConfig, Skipper > | The tracker's own settings, from a classic input file |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, algorithm::AutoRetrackConfig, Skipper > | Parser for the AutoRetrackConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, algorithm::MidPathConfig, Skipper > | Parser for the MidPathConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, algorithm::PostProcessingConfig, Skipper > | Parser for the PostProcessingConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, algorithm::RandomConfig, Skipper > | Parser for the RandomConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, algorithm::RecordsConfig, Skipper > | Parser for RecordsConfig: the classic input format has no keyword for it, so this consumes the config text and leaves the defaults |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, algorithm::RegenerationConfig, Skipper > | Parser for the RegenerationConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, algorithm::SharpeningConfig, Skipper > | Parser for the SharpeningConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, algorithm::TolerancesConfig, Skipper > | Parser for the TolerancesConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, algorithm::ZeroDimConfig, Skipper > | Parser for the ZeroDimConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, algorithm::classic::AlgoChoice, Skipper > | Parser for the AlgoChoice settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, algorithm::classic::EndgameChoiceConfig, Skipper > | Parser for the EndgameChoiceConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, bertini::endgame::CauchyConfig, Skipper > | Parser for the CauchyConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, bertini::endgame::EndgameConfig, Skipper > | Parser for the EndgameConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, bertini::endgame::PowerSeriesConfig, Skipper > | Parser for the PowerSeriesConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, bertini::endgame::SecurityConfig, Skipper > | Parser for the SecurityConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::ConfigSettingParser< Iterator, bertini::endgame::TrackBackConfig, Skipper > | Parser for the TrackBackConfig settings block of classic Bertini input |
| Cbertini::parsing::classic::FunctionParser< Iterator > | A Qi grammar parser for parsing text into function trees |
| Cbertini::parsing::classic::MpfrComplexParser< Iterator, Skipper > | A Qi grammar parsing a complex multiprecision number (real then imaginary part) |
| Cbertini::parsing::classic::MpfrFloatParser< Iterator, Skipper > | A Qi grammar parsing a real multiprecision number, at a precision matching the input's digits |
| Cbertini::parsing::classic::SplitInputFileParser< Iterator, Skipper > | Qi Parser object for parsing text into the SplitInputfile class |
| Cbertini::parsing::classic::SystemParser< Iterator, Skipper > | Qi Parser object for parsing text into the System class |
| Cbertini::settings::parsing::ConfigToIni< Iterator, Skipper > | Qi Parser object for converting Bertini configuration settings into ini format so they can be read by Boost.ProgramOptions |
| Cstd::integral_constant | |
| Cbertini::detail::IndexByType< T, T, RemainingT... > | |
| Cbertini::detail::IndexByType< T1, T2, RemainingT... > | |
| Cbertini::detail::IndexByType< T, Remaining > | |
| Cbertini::detail::IndexByType< T, T, RemainingT... > | |
| Cbertini::detail::IndexByType< T1, T2, RemainingT... > | |
| Cbertini::detail::IsTemplateParameter<... > | Base template, which says 'no', it's not in the pack |
| Cbertini::detail::IsTemplateParameter< F, S, T... > | Specialized template, which says 'yes', if it is in the pack, by recursively expanding the pack |
| Cbertini::detail::IsTemplateParameter< T, TypeList< Ts... > > | IsTemplateParameter specialization accepting the candidate types packaged in a TypeList |
| Cbertini::blocks::LinearFormsBlock | A block of system functions, each an affine linear form f_i(x) = c_i |
| Cbertini::detail::ListCat< Ts > | Concatenate two typelists |
| Cbertini::detail::ListCat< TypeList< Ps... >, TypeList< Qs... >, TypeList< Rs... > > | A specialization of ListCat for joining 3+ lists |
| Cbertini::detail::ListCat< TypeList< Ts... >, TypeList< Rs... > > | A specialization of ListCat for joining two lists |
| Cbertini::logging::Logging | |
| Cbertini::algorithm::MetaConfig | Top-level meta configuration: which algorithm to run |
| Cbertini::algorithm::MidpathCheckReport | Summary of what the midpath (path-crossing) check found at the endgame boundary, and what the algorithm did about it |
| Cbertini::algorithm::MidPathConfig | Configuration for the midpath (path-crossing) check |
| Cbertini::node::NameHolder | Capability class for things which have a name |
| Cbertini::node::special_number::E | The number |
| Cbertini::node::special_number::Pi | The number |
| Cbertini::tracking::NewtonConfig | Settings governing the Newton corrector's iteration bounds |
| Cbertini::tracking::correct::NewtonCorrector | /class NewtonCorrector |
| Cbertini::algorithm::NewtonRefineResult< ComplexT > | The outcome of a standalone Newton refinement |
| Cbertini::NodeMatrix | A matrix of expression-tree nodes (the symbolic Jacobian), stored row-major |
| Cbertini::algorithm::output::NonsingularSolutions | Extracts the nonsingular (multiplicity-one) solutions from a solver's results |
| Cbertini::nag_datatype::NumericalIrreducibleDecomposition< ComplexT, SystemT, ObjManagementP > | The NID data type for Bertini2 |
| Cbertini::NumTraits< T > | Numeric traits for a bertini number type: digit counts, conversions, and companion types |
| Cbertini::NumTraits< complex_dbl > | Numeric traits for double-precision complex numbers |
| Cbertini::NumTraits< complex_mp > | Numeric traits for multiprecision complex numbers (digit counts follow the thread precision) |
| Cbertini::NumTraits< double > | Numeric traits for the built-in double type |
| Cbertini::NumTraits< mpq_rational > | Numeric traits for exact rationals (provides decimal-string parsing) |
| Cbertini::NumTraits< real_mp > | Numeric traits for multiprecision reals (digit counts follow the thread precision) |
| Cbertini::Observable | An abstract observable type, maintaining a list of observers, who can be notified in case of Events |
| Cbertini::endgame::EndgameBase< CauchyEndgame< PrecT >, PrecT > | |
| Cbertini::endgame::EndgameBase< PowerSeriesEndgame< PrecT >, PrecT > | |
| Cbertini::endgame::EndgamePrecPolicyBase< tracking::AMPTracker > | |
| Cbertini::endgame::AMPEndgame | Specifies some necessaries for AMP style endgame implementations, which differ from the fixed precision ones |
| Cbertini::tracking::Tracker< AMPTracker > | |
| Cbertini::tracking::Tracker< FixedPrecisionTracker< DerivedT > > | |
| Cbertini::tracking::Tracker< FixedPrecisionTracker< DoublePrecisionTracker > > | |
| Cbertini::algorithm::AnyAlgorithm | Type-erased base for all nag algorithms, exposing a single Run() entry point |
| Cbertini::algorithm::AnyNID | Type-erased base for the Numerical Irreducible Decomposition algorithm |
| Cbertini::algorithm::NumericalIrreducibleDecomposition< TrackerType, EndgameType, SystemType > | Forward declare of the NumericalIrreducibleDecomposition algorithm |
| Cbertini::algorithm::AnyZeroDim | Type-erased base for a zero-dimensional solve, exposing output and config entry points |
| Cbertini::algorithm::HomotopySolver< A, B, C > | |
| Cbertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType > | The continuation primitive: given a homotopy + a source of start points, track each path through the tracker and endgame, resolve crossings, classify the endpoints, and report |
| Cbertini::endgame::EndgameBase< FlavorT, PrecT > | Base endgame class for all endgames offered in Bertini2 |
| Cbertini::endgame::EndgamePrecPolicyBase< TrackerT > | A common base type for various precision types, fixed and adaptive |
| Cbertini::endgame::FixedPrecEndgame< tracking::DoublePrecisionTracker > | |
| Cbertini::endgame::FixedPrecEndgame< tracking::MultiplePrecisionTracker > | |
| Cbertini::endgame::FixedPrecEndgame< tracking::FixedPrecisionTracker< D > > | |
| Cbertini::endgame::FixedPrecEndgame< TrackerT > | Fixed-precision endgame precision policy (refines and ensures precision at a single working precision) |
| Cbertini::tracking::Tracker< D > | Base tracker class for trackers offered in Bertini2 |
| Cbertini::records::OutputDirectory | One structured output directory: definitions/ + history/ + derived views |
| Cbertini::algorithm::output::Outputter< AlgoT > | Prints data from algorithms |
| Cbertini::algorithm::zero_dim_detail::OwnedHomotopy< SystemType > | Owns and builds the target / start system / homotopy for a zero-dim solve |
| Cbertini::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 |
| Cbertini::ParsedArgs | Parsed results of the command-line arguments |
| Cbertini::linalg::PartialPivLU< NumT > | Stateful partial-pivot LU factor/solve with preallocated, precision-adjustable banks |
| Cbertini::Patch | An affine chart on a product of projective spaces |
| Cbertini::blocks::PolynomialBlock | The polynomial evaluation block: function trees + derivatives + SLP |
| Cbertini::detail::Pool< ObjT, PointerPolicy > | A process-wide cache of objects, held by pointer, that hands out shared references |
| Cbertini::detail::Pool< System > | |
| Cbertini::SystemPool | |
| Cbertini::detail::Pool< Vec< NumT > > | |
| Cbertini::PointPool< NumT > | |
| Cbertini::parallel::PoolShutdownSentinel | |
| Cbertini::algorithm::PostProcessingConfig | Configuration for post-processing solutions (reality/finiteness/singularity classification) |
| Cbertini::endgame::PowerSeriesConfig | Power-series-endgame configuration |
| CPrecisionEvent | |
| Cbertini::tracking::PrecisionChanged< ObservedT > | Event emitted when the tracker's working precision changes |
| Cbertini::tracking::PrecisionDecreased< ObservedT > | Precision decreased during tracking |
| Cbertini::tracking::PrecisionIncreased< ObservedT > | Precision increased during tracking |
| Cbertini::system::Precon | A collection of preconstructed example systems, for tests and demonstrations |
| CPrecT | |
| Cbertini::endgame::EndgameBase< CauchyEndgame< PrecT >, PrecT > | |
| Cbertini::endgame::EndgameBase< PowerSeriesEndgame< PrecT >, PrecT > | |
| Cbertini::endgame::EndgameBase< FlavorT, PrecT > | Base endgame class for all endgames offered in Bertini2 |
| Cbertini::blocks::ProductsOfLinearsBlock | A block of system functions, each a product of linear forms |
| Cbertini::policy::RaiseExceptionWithTypeNamesInMessage< VisitedT, RetT > | A policy that throws (with the offending type names) when an unknown visitor is encountered |
| Cbertini::algorithm::RandomConfig | The RNG seed a classic Bertini input file asks for, via randomseed: N; |
| Cbertini::blocks::RandomizationBlock< SystemT > | A block that randomizes an overdetermined operand system down to a square one (with a constant coefficient matrix) |
| Ckarma::real_policies | |
| Cbertini::generators::BertiniNumPolicy< real_mp > | BertiniNumPolicy specialization for multiprecision reals (precision follows the value) |
| Cbertini::generators::BertiniNumPolicy< Num > | Karma real-number formatting policy: always scientific, at the type's full precision |
| Cbertini::generators::BertiniNumPolicy< real_mp > | BertiniNumPolicy specialization for multiprecision reals (precision follows the value) |
| Cbertini::algorithm::RecordsConfig | How a recording algorithm uses the records it finds: not what to compute, but what already-recorded work counts as done |
| Cbertini::nag_datatype::policy::Reference< T > | Storage policy that holds a reference to an externally-owned object |
| Cbertini::algorithm::RegenerationConfig | Configuration for the regeneration cascade |
| Cstd::runtime_error | |
| Cbertini::IncompatibleObserver | Thrown when an observer is attached to an observable it cannot observe |
| Cbertini::scoped_mpfr_precision_options_all_threads | RAII guard setting the multiprecision variable-precision options for all threads, restoring on scope exit |
| Cbertini::scoped_mpfr_precision_options_this_thread | RAII guard setting the multiprecision variable-precision options for the current thread, restoring on scope exit |
| Cbertini::algorithm::HomotopySolver< TrackerType, EndgameType, SystemType >::ScopedSessionState | Restores the ambient session state a solve may perturb: "a solve
leaves the session as it found it" |
| Cbertini::ScopedStopRequest | Clears any stale stop request on the way in, and again on the way out |
| Cbertini::endgame::SecurityConfig | Security (divergence-bailout) configuration for an endgame |
| Cbertini::detail::SharedPointerPolicy< ObjT > | Pool pointer policy that holds objects via std::shared_ptr |
| Cbertini::nag_datatype::policy::SharedPtr< T > | Storage policy that holds objects via std::shared_ptr |
| Cbertini::algorithm::output::Sharpen | |
| Cbertini::algorithm::Sharpen< SystemType > | |
| Cbertini::algorithm::SharpeningConfig | Configuration for sharpening computed solutions |
| Cbertini::detail::Singleton | A virtual singleton base class which can be used in a heirarchy to require a class to be singleton |
| Cbertini::Slice | A linear slice of affine or projective space: a stack of linear forms, M [x ; 1] |
| Cbertini::SLPInputLocations | A struct encapsulating the starting locations of inputs in the SLP's memory layout |
| Cbertini::SLPMemory | The per-thread mutable working state of a straight-line program evaluation: the register file (one bank per number type), the working precision, and the freshness / frozen-prologue flags |
| Cbertini::SLPNumberOf | A struct encapsulating the numbers of things appearing in the SLP |
| Cbertini::SLPOutputLocations | A struct encapsulating the starting locations of outputs in the SLP's memory layout |
| Cbertini::SLPProgram | The immutable compiled straight-line program (ADR-0027): the instruction tape, the constant recipe (true values of numbers + integer bank), and the memory layout (numbers of / locations of things) |
| Cbertini::algorithm::SolutionMetaData< ComplexT > | Per-solution metadata gathered during and after a path track |
| Cbertini::algorithm::SolveReport | A concise, human-readable summary of a zero-dimensional solve: how every path ended up, and – crucially – whether any path was lost |
| Cbertini::parsing::classic::SplitInputFile | Storage class for input file that splits up the config portion from the input portion |
| Cbertini::parallel::StartPointTask< ComplexT > | Work item for the speculative-full-path model: a path index plus its start point |
| Cbertini::tracking::StepMetadata | Metadata produced by a single predict or correct step |
| Cbertini::tracking::SteppingConfig | Settings governing step-size adjustment during tracking |
| Cbertini::StraightLineProgram | An implementation of straight-line programs, implemented with strong inspiration from Bertini1's implementation |
| Cbertini::System | The fundamental polynomial system class for Bertini2 |
| Cbertini::start_system::StartSystem | Abstract base class for other start systems |
| Cbertini::start_system::MHomogeneous | The $m$-homogeneous start system for Numerical Algebraic Geometry |
| Cbertini::start_system::TotalDegreeBinomial | Roots-of-unity start system for 1-homogeneous polynomial systems |
| Cbertini::start_system::TotalDegreeLinearProduct | Total degree start system for 1-homogeneous polynomial systems, built from random linear products |
| Cbertini::start_system::User | The user-provided start system for Numerical Algebraic Geometry |
| Cbertini::parallel::ThreadSafeQueue< T > | A simple thread-safe (mutex + condition-variable) FIFO queue |
| Cbertini::algorithm::TolerancesConfig | Newton and path-tracking tolerances |
| Cbertini::endgame::TrackBackConfig | Track-back endgame configuration |
| Cbertini::tracking::TrackerConfig | The thresholds a tracker judges a path against: close enough, and too big |
| Cbertini::tracking::TrackerTraits< T > | Trait lookup mapping a tracker type to its numeric types, event-emitter type, precision config, and the type/config lists it needs |
| CTrackingEvent | |
| Cbertini::tracking::Initializing< ObservedT, NumT > | TrackPath is initializing the tracker |
| Cbertini::tracking::SuccessfulCorrect< ObservedT, NumT > | The correct part of a time step was successful |
| Cbertini::tracking::SuccessfulPredict< ObservedT, NumT > | The predict part of tracking step was successful |
| Cstd::true_type | |
| Cbertini::blocks::is_block< B, std::void_t< decltype(std::declval< const B & >().NumFunctions()), decltype(std::declval< const B & >().DependsOnPathVariable()), decltype(std::declval< const B & >().Precision()), decltype(std::declval< const B & >().Precision(0u)), decltype(std::declval< const B & >().Degrees()), decltype(std::declval< const B & >().Degrees(std::declval< VariableGroup const & >())), decltype(std::declval< const B & >().IsHomogeneous(std::declval< VariableGroup const & >())), decltype(std::declval< const B & >().IsPolynomial(std::declval< VariableGroup const & >())), decltype(std::declval< B & >().Homogenize(std::declval< VariableGroup const & >(), std::declval< std::shared_ptr< node::Variable > const & >())), decltype(std::declval< const B & >().template EvalInPlace< complex_dbl >(std::declval< Eigen::Ref< Vec< complex_dbl > > >(), std::declval< Vec< complex_dbl > const & >(), std::declval< complex_dbl const & >())), decltype(std::declval< const B & >().template JacobianInPlace< complex_dbl >(std::declval< Eigen::Ref< Mat< complex_dbl > > >(), std::declval< Vec< complex_dbl > const & >(), std::declval< complex_dbl const & >())), decltype(std::declval< const B & >().template TimeDerivInPlace< complex_dbl >(std::declval< Eigen::Ref< Vec< complex_dbl > > >(), std::declval< Vec< complex_dbl > const & >(), std::declval< complex_dbl const & >()))> > | |
| Cbertini::detail::AreValidArguments< true > | |
| Cbertini::detail::TypeList< Ts > | A basic typelist, in the style of Modern C++ Design, but using variadic templates |
| Cbertini::VisitableBase< RetT, CatchAll > | The base class for visitable types |
| Cbertini::node::Node | An interface for all nodes in a function tree, and for a function object as well |
| Cbertini::Visitor< VisitedT, RetT > | The first non-trivial visitor class |
| Cbertini::Visitor< node::ArcCosOperator > | |
| Cbertini::SLPCompiler | Compiles a System (or polynomial block) into a StraightLineProgram by visiting its function-tree nodes and emitting tape instructions (with common-subexpression sharing) |
| Cbertini::Visitor< node::ArcSinOperator > | |
| Cbertini::SLPCompiler | Compiles a System (or polynomial block) into a StraightLineProgram by visiting its function-tree nodes and emitting tape instructions (with common-subexpression sharing) |
| Cbertini::Visitor< node::ArcTanOperator > | |
| Cbertini::SLPCompiler | Compiles a System (or polynomial block) into a StraightLineProgram by visiting its function-tree nodes and emitting tape instructions (with common-subexpression sharing) |
| Cbertini::Visitor< node::Complex > | |
| Cbertini::SLPCompiler | Compiles a System (or polynomial block) into a StraightLineProgram by visiting its function-tree nodes and emitting tape instructions (with common-subexpression sharing) |
| Cbertini::Visitor< node::CosOperator > | |
| Cbertini::SLPCompiler | Compiles a System (or polynomial block) into a StraightLineProgram by visiting its function-tree nodes and emitting tape instructions (with common-subexpression sharing) |
| Cbertini::Visitor< node::Differential > | |
| Cbertini::SLPCompiler | Compiles a System (or polynomial block) into a StraightLineProgram by visiting its function-tree nodes and emitting tape instructions (with common-subexpression sharing) |
| Cbertini::Visitor< node::ExpOperator > | |
| Cbertini::SLPCompiler | Compiles a System (or polynomial block) into a StraightLineProgram by visiting its function-tree nodes and emitting tape instructions (with common-subexpression sharing) |
| Cbertini::Visitor< node::Integer > | |
| Cbertini::SLPCompiler | Compiles a System (or polynomial block) into a StraightLineProgram by visiting its function-tree nodes and emitting tape instructions (with common-subexpression sharing) |
| Cbertini::Visitor< node::IntegerPowerOperator > | |
| Cbertini::SLPCompiler | Compiles a System (or polynomial block) into a StraightLineProgram by visiting its function-tree nodes and emitting tape instructions (with common-subexpression sharing) |
| Cbertini::Visitor< node::LogOperator > | |
| Cbertini::SLPCompiler | Compiles a System (or polynomial block) into a StraightLineProgram by visiting its function-tree nodes and emitting tape instructions (with common-subexpression sharing) |
| Cbertini::Visitor< node::MultOperator > | |
| Cbertini::SLPCompiler | Compiles a System (or polynomial block) into a StraightLineProgram by visiting its function-tree nodes and emitting tape instructions (with common-subexpression sharing) |
| Cbertini::Visitor< node::NamedExpression > | |
| Cbertini::SLPCompiler | Compiles a System (or polynomial block) into a StraightLineProgram by visiting its function-tree nodes and emitting tape instructions (with common-subexpression sharing) |
| Cbertini::Visitor< node::NegateOperator > | |
| Cbertini::SLPCompiler | Compiles a System (or polynomial block) into a StraightLineProgram by visiting its function-tree nodes and emitting tape instructions (with common-subexpression sharing) |
| Cbertini::Visitor< node::PowerOperator > | |
| Cbertini::SLPCompiler | Compiles a System (or polynomial block) into a StraightLineProgram by visiting its function-tree nodes and emitting tape instructions (with common-subexpression sharing) |
| Cbertini::Visitor< node::Rational > | |
| Cbertini::SLPCompiler | Compiles a System (or polynomial block) into a StraightLineProgram by visiting its function-tree nodes and emitting tape instructions (with common-subexpression sharing) |
| Cbertini::Visitor< node::SinOperator > | |
| Cbertini::SLPCompiler | Compiles a System (or polynomial block) into a StraightLineProgram by visiting its function-tree nodes and emitting tape instructions (with common-subexpression sharing) |
| Cbertini::Visitor< node::special_number::E > | |
| Cbertini::SLPCompiler | Compiles a System (or polynomial block) into a StraightLineProgram by visiting its function-tree nodes and emitting tape instructions (with common-subexpression sharing) |
| Cbertini::Visitor< node::special_number::Pi > | |
| Cbertini::SLPCompiler | Compiles a System (or polynomial block) into a StraightLineProgram by visiting its function-tree nodes and emitting tape instructions (with common-subexpression sharing) |
| Cbertini::Visitor< node::SqrtOperator > | |
| Cbertini::SLPCompiler | Compiles a System (or polynomial block) into a StraightLineProgram by visiting its function-tree nodes and emitting tape instructions (with common-subexpression sharing) |
| Cbertini::Visitor< node::SumOperator > | |
| Cbertini::SLPCompiler | Compiles a System (or polynomial block) into a StraightLineProgram by visiting its function-tree nodes and emitting tape instructions (with common-subexpression sharing) |
| Cbertini::Visitor< node::TanOperator > | |
| Cbertini::SLPCompiler | Compiles a System (or polynomial block) into a StraightLineProgram by visiting its function-tree nodes and emitting tape instructions (with common-subexpression sharing) |
| Cbertini::Visitor< node::Variable > | |
| Cbertini::SLPCompiler | Compiles a System (or polynomial block) into a StraightLineProgram by visiting its function-tree nodes and emitting tape instructions (with common-subexpression sharing) |
| Cbertini::VisitorBase | A strawman class for implementing the visitor pattern |
| Cbertini::SLPCompiler | Compiles a System (or polynomial block) into a StraightLineProgram by visiting its function-tree nodes and emitting tape instructions (with common-subexpression sharing) |
| Cbertini::nag_datatype::WitnessSet< NumT, SystemT, ObjManagementP > | The main way to represent a positive dimensional component in numerical algebraic geometry |
| Cbertini::parallel::WorkerThreadPool< TaskT, ResultT, StateFactory, TrackFn > | Thread pool for parallel path tracking within a single MPI worker rank |
| Cbertini::algorithm::ZeroDimConfig | Top-level configuration for a zero-dimensional solve (times, precision, threading) |
| Cbertini::blackbox::ZeroDimRT | Runtime options selecting which ZeroDim algorithm to instantiate |