11 #ifndef __MMX_MONOMIAL_GLUE_HPP
12 #define __MMX_MONOMIAL_GLUE_HPP
13 #include <basix/category_meta.hpp>
14 #include <basix/tuple.hpp>
15 #include <basix/vector.hpp>
20 #define MONOMIAL monom<int>
27 register unsigned i, h= 214365^
hash(v.coeff()), n= v.size();
29 h= (h<<1) ^ (h<<5) ^ (h>>27) ^
hash(v[i]);
37 syntactic m=
flatten(v.coeff());
38 for(
unsigned i=0;i<v.nbvar();i++)
39 m = m*
pow(syntactic(MONOMIAL::var[i].data()),v[i]);
56 for(nat i=0;i<m.size();i++) res<<m[i];
63 template<
typename T,
typename F,
typename TR,
typename FR>
69 for (
unsigned i=0; i<x.
size(); i++)
79 #endif // __MMX_MONOMIAL_GLUE_HPP
T pow(const T &a, int i)
Definition: binomials.hpp:12
#define TMPL
Definition: monomial_glue.hpp:18
unsigned size() const
Definition: monomial.hpp:135
Definition: assign.hpp:48
TMPL bool exact_neq(const Monomial &v1, const Monomial &v2)
Definition: monomial_glue.hpp:24
self_t & set_expt(size_type i, exponent_t d)
Definition: monomial.hpp:144
#define Monomial
Definition: monomial.hpp:56
TMPL int N(const MONOMIAL &v)
Definition: monomial_glue.hpp:60
#define MONOMIAL
Definition: monomial_glue.hpp:20
TMPL unsigned exact_hash(const Monomial &m)
Definition: monomial_glue.hpp:32
TMPL unsigned hash(const Monomial &v)
Definition: monomial_glue.hpp:26
TMPL MONOMIAL monomial_from_vector(const vector< int > &t)
Definition: monomial_glue.hpp:45
static monom< T, TR > cv(const monom< F, FR > &x)
Definition: monomial_glue.hpp:67
Definition: shared_object.hpp:61
TMPL syntactic flatten(const MONOMIAL &v)
Definition: monomial_glue.hpp:36
ZZ size(const ZZ &z)
Definition: GMPXX.hpp:67
TMPL bool exact_eq(const Monomial &v1, const Monomial &v2)
Definition: monomial_glue.hpp:23
const C & coeff() const
Definition: monomial.hpp:128
Monomial class.
Definition: monomial.hpp:62
TMPL unsigned soft_hash(const Monomial &m)
Definition: monomial_glue.hpp:33
TMPL vector< int > vector_from_monomial(const MONOMIAL &m)
Definition: monomial_glue.hpp:54