49 type::Start start = type::Start::TotalDegree;
50 type::Tracker tracker = type::Tracker::Adaptive;
51 type::Endgame endgame = type::Endgame::Cauchy;
55template <
typename StartType,
typename TrackerType,
typename EndgameType,
template<
typename,
typename>
class SystemManagementPol,
typename ... ConstTs>
56std::unique_ptr<algorithm::AnyZeroDim> ZeroDimSpecifyComplete(ConstTs
const& ...ts)
58 return std::make_unique<
68template <
typename StartType,
typename TrackerType,
typename EndgameType,
typename ... ConstTs>
69std::unique_ptr<algorithm::AnyZeroDim> ZeroDimSpecifyShouldClone(std::true_type, ConstTs
const& ...ts)
71 return ZeroDimSpecifyComplete<StartType, TrackerType,
72 typename endgame::EndgameSelector<TrackerType>::Cauchy, policy::CloneGiven>(ts...);
75template <
typename StartType,
typename TrackerType,
typename EndgameType,
typename ... ConstTs>
76std::unique_ptr<algorithm::AnyZeroDim> ZeroDimSpecifyShouldClone(std::false_type, ConstTs
const& ...ts)
78 return ZeroDimSpecifyComplete<StartType, TrackerType,
79 typename endgame::EndgameSelector<TrackerType>::Cauchy, policy::RefToGiven>(ts...);
83template <
typename StartType,
typename TrackerType,
typename ... ConstTs>
84std::unique_ptr<algorithm::AnyZeroDim> ZeroDimSpecifyEndgame(ZeroDimRT
const& rt, ConstTs
const& ...ts)
89 case type::Endgame::PowerSeries:
90 return ZeroDimSpecifyShouldClone<StartType, TrackerType,
91 typename endgame::EndgameSelector<TrackerType>::PSEG>(
typename StorageSelector<StartType>::ShouldClone(), ts...);
93 case type::Endgame::Cauchy:
94 return ZeroDimSpecifyShouldClone<StartType, TrackerType,
95 typename endgame::EndgameSelector<TrackerType>::Cauchy>(
typename StorageSelector<StartType>::ShouldClone(), ts...);
99template <
typename StartType,
typename ... ConstTs>
100std::unique_ptr<algorithm::AnyZeroDim> ZeroDimSpecifyTracker(ZeroDimRT
const& rt, ConstTs
const& ...ts)
104 case type::Tracker::FixedDouble:
105 return ZeroDimSpecifyEndgame<StartType, tracking::DoublePrecisionTracker>(rt, ts...);
106 case type::Tracker::FixedMultiple:
107 return ZeroDimSpecifyEndgame<StartType, tracking::MultiplePrecisionTracker>(rt, ts...);
108 case type::Tracker::Adaptive:
109 return ZeroDimSpecifyEndgame<StartType, tracking::AMPTracker>(rt, ts...);
113template <
typename ... ConstTs>
114std::unique_ptr<algorithm::AnyZeroDim> ZeroDimSpecifyStart(ZeroDimRT
const& rt, ConstTs
const& ...ts)
118 case type::Start::TotalDegree:
119 return ZeroDimSpecifyTracker<start_system::TotalDegree>(rt, ts...);
120 case type::Start::MHom:
121 return ZeroDimSpecifyTracker<start_system::MHomogeneous>(rt, ts...);
122 case type::Start::User:
123 throw std::runtime_error(
"trying to use generic zero dim with user homotopy. use the specific UserBlaBla instead");
127template <
typename ... ConstTs>
128std::unique_ptr<algorithm::AnyZeroDim> MakeZeroDim(ZeroDimRT
const& rt, ConstTs
const& ...ts)
130 return ZeroDimSpecifyStart(rt, ts...);
Configs for the blackbox whatnot.
Collects the various header files which define the Bertini2 endgames.
Collects the various header files which define the Bertini2 systems.
Provides the algorithm for computing all zero-dimensional solutions for an algberaic system.