68 template<
typename NumT>
73 auto const& v = random_values_[index]->GetValue();
74 if constexpr (std::is_same<NumT, complex_dbl>::value)
75 return complex_dbl(
double(v.real()),
double(v.imag()));
86 return random_values_;
108 void CopyDegrees(
System const& s);
113 void SeedRandomValues(
int num_functions);
118 void GenerateFunctions();
135 std::vector<std::shared_ptr<node::Complex> > random_values_;
136 std::vector<unsigned long long> degrees_;
141 template <
typename Archive>
142 void serialize(Archive& ar,
const unsigned ) {
143 ar & boost::serialization::base_object<StartSystem>(*
this);
System()
The default constructor for a system.
Definition system.hpp:117
std::shared_ptr< node::Node > Nd
Shorthand for a shared pointer to a generic expression-tree node.
Definition system.hpp:112
Abstract base class for other start systems.
Definition start_base.hpp:83
TotalDegreeBinomial & operator*=(Nd const &n)
Multiply this start system in place by an expression node.
TotalDegreeBinomial()=default
virtual ~TotalDegreeBinomial()=default
TotalDegreeBinomial(System const &s)
Constructor for making a roots-of-unity start system from a polynomial system.
void SanityChecks(System const &s)
Check that the target system is suitable for a roots-of-unity start system.
NumT RandomValue(size_t index) const
Get the random value for start function with index.
Definition total_degree_binomial.hpp:69
std::vector< std::shared_ptr< node::Complex > > const & RandomValues()
Get all the random values, in their Node form.
Definition total_degree_binomial.hpp:84
unsigned long long NumStartPoints() const override
Get the number of start points for this roots-of-unity start system.
TotalDegreeBinomial & operator+=(System const &sys)=delete
friend class boost::serialization::access
Definition total_degree_binomial.hpp:139
Definition zero_dim_solve.hpp:68
Definition algorithm_builder.hpp:36
std::complex< double > complex_dbl
The double-precision complex number type.
Definition double_extensions.hpp:47
Eigen::Matrix< NumT, Eigen::Dynamic, 1 > Vec
A dynamically-sized column vector of NumT.
Definition eigen_extensions.hpp:296
bmp::number< mpc_complex_backend< 0 >, bmp::et_on > complex_mp
The arbitrary-precision complex number type.
Definition mpfr_complex.hpp:58
Defines generic start system type.
utilities for start system code.