20 template <
class C,
class R>
33 Monom(
const C &
c,
const R &
r):coeff(c),rep(r){}
38 for(
int j=0;
j<
i;
j++) rep.setExponent(
j,0);
42 Monom(
const C &
c,
int i,
int d=1 ):coeff(c), rep(i){
47 Monom(
const C &
c,
int s,
int *t):coeff(c), rep(s){
48 for(
int i=0;
i<s;
i++) rep.setExponent(
i,t[
i]);
80 return coeff == m2.
coeff && rep == m2.
rep;
110 template <
class C,
class R>
inline
113 if (coeff==(C)0)
erase(rep);
117 template <
class C,
class R>
inline
120 if (coeff==(C)0)
erase(rep);
124 template <
class C,
class R>
inline
131 template <
class C,
class R>
inline
138 template <
class C,
class R>
inline
141 if (coeff!=(C)0) rep+=m.
rep;
147 template <
class C,
class R>
inline
152 if (res.
coeff !=(C)0)
159 template <
class C,
class R>
inline
163 if (coeff==(C)0)
erase(rep);
167 template <
class C,
class R>
inline
179 template <
class C,
class R>
inline
180 std::ostream & operator << (std::ostream & os, const Monom <C,R> & m)
182 if (m.coeff !=(C)0 ) os << m.coeff;
183 if (m.Lvar()>=0) os <<m.rep;
188 template <
class C,
class R,
class T>
199 template <
class C,
class R>
207 M
MGcd(
const M & m1,
const M & m2) {
208 int d =
Gcd(m1.GetCoeff(),m2.GetCoeff());
210 int v =
Min(m1.Lvar(),m2.Lvar());
211 for (
int i = 0;
i <= v; ++
i)
212 res.SetDegree(
i,
Min(m1.GetDegree(
i),m2.GetDegree(
i)));
217 M
div(
const M & m1,
const M & m2) {
218 M res(1); res*=(m1.GetCoeff()/m2.GetCoeff());
219 for (
int i = 0;
i <= m1.Lvar(); ++
i)
220 res.SetDegree(
i,m1.GetDegree(
i) - m2.GetDegree(
i));
Monom(const Monom &m)
Definition: Monom.hpp:50
Monom(const C &c)
Definition: Monom.hpp:34
Monom< C, R > operator+(const Monom< C, R > &m1, const Monom< C, R > &m2)
Definition: Monom.hpp:125
Monom< C, R > & operator-=(const Monom< C, R > &)
Definition: Monom.hpp:118
int lvar(const dynamicexp< X, E > &A)
Definition: dynamicexp.hpp:178
M div(const M &m1, const M &m2)
Definition: Monom.hpp:217
C GetCoeff() const
Definition: Monom.hpp:67
friend bool IsComparable(const Monom< C, R > &m1, const Monom< C, R > &m2)
Definition: Monom.hpp:76
Monom< C, R > & operator+=(const Monom< C, R > &)
Definition: Monom.hpp:111
int Lvar() const
Definition: Monom.hpp:69
Monom< C, R > pow(Monom< C, R > &m, T n)
Definition: Monom.hpp:189
void add(dynamicexp< X, E > &r, const dynamicexp< X, E > &A, const dynamicexp< X, E > &B)
Definition: dynamicexp.hpp:213
exponent_t GetDegree(int i) const
Definition: Monom.hpp:72
if(!(yy_init))
Definition: lex.mpoly.c:689
MSKconetypee MSKrealt MSKint32t MSKint32t j
Definition: mosek.h:2421
Monom< C, R > operator-(const Monom< C, R > &m1, const Monom< C, R > &m2)
Definition: Monom.hpp:132
Monom< C, R > & operator=(const Monom< C, R > &m)
Definition: Monom.hpp:57
R::degree_t Degree(const Monom< C, R > &m)
Definition: Monom.hpp:200
R rep
Definition: Monom.hpp:30
C coeff_t
Definition: Monom.hpp:26
Monom()
Definition: Monom.hpp:32
C coeff
Definition: Monom.hpp:29
void SDegree(dynamicexp< X, E > &A, int i, int d)
Definition: dynamicexp.hpp:140
exponent_t operator[](int i) const
Definition: Monom.hpp:71
R rep_t
Definition: Monom.hpp:27
int index_t
Definition: Monom.hpp:24
exponent_t GetDegree() const
Definition: Monom.hpp:70
MSKrealt * c
Definition: mosek.h:2678
X Min(X a, X b)
Definition: MinMax.H:3
MSKint32t MSKint32t MSKint32t i
Definition: mosek.h:2278
Monom(int i)
Definition: Monom.hpp:35
Monom(const C &c, const R &r)
Definition: Monom.hpp:33
Monom< C, R > operator*(const Monom< C, R > &m1, const Monom< C, R > &m2)
Definition: Monom.hpp:148
MSKrescodee r
Definition: mosek.h:2321
Monom< C, R > & operator*=(const Monom< C, R > &)
Definition: Monom.hpp:139
bool operator==(const Monom< C, R > &m2) const
Definition: Monom.hpp:79
void SetDegree(int i, int d)
Definition: Monom.hpp:73
M MGcd(const M &m1, const M &m2)
Definition: Monom.hpp:207
Monom(const C &c, int s, int *t)
Definition: Monom.hpp:47
Monom(int i, int d)
Definition: Monom.hpp:36
R::exponent_t exponent_t
Definition: Monom.hpp:25
void SetCoeff(const C &c)
Definition: Monom.hpp:68
Monom< C, R > operator-() const
Definition: Monom.hpp:86
Multivariate monomials.
Definition: Monom.hpp:21
bool operator!=(const Monom< C, R > &m2) const
Definition: Monom.hpp:82
void erase(dynamicexp< X, E > &A)
Definition: dynamicexp.hpp:183
Monom(const C &c, int i, int d=1)
Definition: Monom.hpp:42