|
Macaulay2 Engine
|
Engine-side commutative monomial monoid: variable names, ordering, multidegree machinery, and monomial encoding/decoding. More...
#include <monoid.hpp>
Static Public Member Functions | |
| static Monoid * | create (const MonomialOrdering *mo, const PolynomialRing *DR, const std::vector< std::string > &names, const std::vector< int > °s, const std::vector< int > &hefts) |
| static void | set_trivial_monoid_degree_ring (const PolynomialRing *DR) |
| static Monoid * | get_trivial_monoid () |
| Static Public Member Functions inherited from our_new_delete | |
| static void * | operator new (size_t size) |
| static void * | operator new[] (size_t size) |
| static void | operator delete (void *obj) |
| static void | operator delete[] (void *obj) |
| static void * | operator new (size_t size, void *existing_memory) |
| static void * | operator new[] (size_t size, void *existing_memory) |
| static void | operator delete (void *obj, void *existing_memory) |
| static void | operator delete[] (void *obj, void *existing_memory) |
Private Types | |
| enum | overflow_type { OVER , OVER1 , OVER2 , OVER4 } |
Private Member Functions | |
| void | set_degrees () |
| sets mHeftDegrees and mDegreeOfVar | |
| void | set_overflow_flags () |
| used for preventing overflows | |
| Monoid () | |
| constructors | |
| Monoid (const MonomialOrdering *mo, const PolynomialRing *DR, const std::vector< std::string > names, const std::vector< int > degs, const std::vector< int > hefts) | |
Private Attributes | |
| const Monoid * | mDegreeMonoid |
| const PolynomialRing * | mDegreeRing |
| const MonomialOrdering * | mo_ |
| the monomial ordering of the variables | |
| MonomialOrder * | monorder_ |
| const int | mVariableCount |
| number of variables | |
| const std::vector< std::string > | mVariableNames |
| names of variables | |
| const std::vector< int > | mDegrees |
| length mVariableCount * (length of a single degree vector) | |
| const std::vector< int > | mHeftVector |
| length of a single degree vector | |
| std::vector< int > | mHeftDegrees |
| length mVariableCount | |
| gc_vector< const_monomial > | mDegreeOfVar |
| size_t | exp_size |
| int | monomial_size_ |
| size of an encoded monomial | |
| int | monomial_bound_ |
| int | first_weights_slot_ |
| int | n_invertible_vars_ |
| number of invertible variables | |
| int | n_before_component_ |
| indicates where the free module components are in the monomial order | |
| int | n_after_component_ |
| bool | component_up_ |
| indicates whether free module components are ordered lexicographically | |
| std::vector< int > | local_vars |
| These are the variables which are < 1 in the monomial order. | |
| std::vector< bool > | mLaurentVariablesPredicate |
| These are the variables which can have negative exponents. | |
| gc_vector< int > | nslots_ |
| number of slots per monomial order block | |
| enum Monoid::overflow_type * | overflow |
Static Private Attributes | |
| static Monoid * | trivial_monoid = nullptr |
| the trivial monoid | |
Engine-side commutative monomial monoid: variable names, ordering, multidegree machinery, and monomial encoding/decoding.
Owns the front-end MonomialOrdering* mo_ plus its compiled MonomialOrder* monorder_ form, the variable count and names, the per-variable multidegrees, the heft vector, and (recursively) a mDegreeMonoid describing how degrees themselves are structured. Exposes the operations rings reduce against (mult, divide, lcm, gcd, compare, is_one, plus encode / decode between exponent vectors and packed monomial words). The commutative counterpart of FreeMonoid in the NC stack.
Definition at line 88 of file monoid.hpp.