8template <
typename C,
typename D, D M>
10template <
typename C,
typename D, D M>
11SparsePolynomial<C,D,M>
operator *(
const SparsePolynomial<C,D,M>& a,
const SparsePolynomial<C,D,M>& b );
17template <
typename C,
typename D, D M>
20 static_assert(
M > 0 );
38 [[nodiscard]]
bool empty()
const {
return map_.empty(); }
44 [[nodiscard]]
const std::map<D, C> &
get()
const {
return map_; }
54template <
typename C,
typename D, D M>
58 for (
const auto & [deg, cf] : map_ )
66template <
typename C,
typename D, D M>
77template <
typename C,
typename D, D M>
93template <
typename C,
typename D, D M>
97 return map_.begin()->second > 0;
103template <
typename C,
typename D, D M>
106 for (
const auto & [degB, cfB] : b.map_ )
109 auto [it,inserted] = map_.insert( { degB, cfB } );
112 const auto sum = it->second + cfB;
122template <
typename C,
typename D, D M>
125 for (
const auto & [degB, cfB] : b.map_ )
128 auto [it,inserted] = map_.insert( { degB, -cfB } );
131 const auto sum = it->second - cfB;
141template <
typename C,
typename D, D M>
144 std::map<D,C> resMap;
145 for (
const auto & [degA, cfA] : a.map_ )
148 for (
const auto & [degB, cfB] : b.map_ )
151 const auto deg = degA + degB;
154 const auto cf = cfA * cfB;
155 auto [it,inserted] = resMap.insert( { deg, cf } );
158 const auto sum = it->second + cf;
Definition MRSparsePolynomial.h:19
bool empty() const
returns true if no single polynomial coefficient is defined
Definition MRSparsePolynomial.h:38
SparsePolynomial & operator-=(const SparsePolynomial &b)
Definition MRSparsePolynomial.h:123
SparsePolynomial()=default
constructs zero polynomial
bool isPositive() const
returns true if the coefficient for the smallest not-zero degress is positive
Definition MRSparsePolynomial.h:94
void setZeroCoeff(D d)
sets coefficient for given degree to zero
Definition MRSparsePolynomial.h:35
SparsePolynomial & operator+=(const SparsePolynomial &b)
Definition MRSparsePolynomial.h:104
const std::map< D, C > & get() const
gets read-only access to all not-zero coefficients
Definition MRSparsePolynomial.h:44
friend SparsePolynomial operator*(const SparsePolynomial &a, const SparsePolynomial &b)
Definition MRSparsePolynomial.h:142
Definition MRCameraOrientationPlugin.h:8
Color operator*(float a, const Color &b)
Definition MRMesh/MRColor.h:116