11template <
typename C,
typename D, D M>
12class SparsePolynomial;
13template <
typename C,
typename D, D M>
14SparsePolynomial<C,D,M>
operator *(
const SparsePolynomial<C,D,M>& a,
const SparsePolynomial<C,D,M>& b );
20template <
typename C,
typename D, D M>
23 static_assert(
M > 0 );
41 [[nodiscard]]
bool empty()
const {
return map_.empty(); }
47 [[nodiscard]]
const std::map<D, C> &
get()
const {
return map_; }
57template <
typename C,
typename D, D M>
61 for (
const auto & [deg, cf] : map_ )
69template <
typename C,
typename D, D M>
80template <
typename C,
typename D, D M>
96template <
typename C,
typename D, D M>
100 return map_.begin()->second > 0;
106template <
typename C,
typename D, D M>
109 for (
const auto & [degB, cfB] : b.map_ )
112 auto [it,inserted] = map_.insert( { degB, cfB } );
115 const auto sum = it->second + cfB;
125template <
typename C,
typename D, D M>
128 for (
const auto & [degB, cfB] : b.map_ )
131 auto [it,inserted] = map_.insert( { degB, -cfB } );
134 const auto sum = it->second - cfB;
144template <
typename C,
typename D, D M>
147 std::map<D,C> resMap;
148 for (
const auto & [degA, cfA] : a.map_ )
151 for (
const auto & [degB, cfB] : b.map_ )
154 const auto deg = degA + degB;
157 const auto cf = cfA * cfB;
158 auto [it,inserted] = resMap.insert( { deg, cf } );
161 const auto sum = it->second + cf;
Definition MRSparsePolynomial.h:22
bool empty() const
returns true if no single polynomial coefficient is defined
Definition MRSparsePolynomial.h:41
SparsePolynomial & operator-=(const SparsePolynomial &b)
Definition MRSparsePolynomial.h:126
SparsePolynomial()=default
constructs zero polynomial
bool isPositive() const
returns true if the coefficient for the smallest not-zero degress is positive
Definition MRSparsePolynomial.h:97
void setZeroCoeff(D d)
sets coefficient for given degree to zero
Definition MRSparsePolynomial.h:38
Color operator*(float a, const Color &b)
Definition MRColor.h:119
SparsePolynomial & operator+=(const SparsePolynomial &b)
Definition MRSparsePolynomial.h:107
const std::map< D, C > & get() const
gets read-only access to all not-zero coefficients
Definition MRSparsePolynomial.h:47
friend SparsePolynomial operator*(const SparsePolynomial &a, const SparsePolynomial &b)
Definition MRSparsePolynomial.h:145
only for bindings generation
Definition MRCameraOrientationPlugin.h:8