|
Macaulay2 Engine
|
The free non-commutative monoid on a set of named variables, with monomial ordering and degree / weight machinery. More...
#include <FreeMonoid.hpp>
Public Types | |
| using | MonomialInserter = gc_vector<int> |
Public Member Functions | |
| FreeMonoid (const std::vector< std::string > &variableNames, const PolynomialRing *degreeRing, const std::vector< int > °rees, const std::vector< int > &wtvecs, const std::vector< int > &heftVector) | |
| const std::vector< std::string > & | variableNames () const |
| const std::vector< int > & | flattenedDegrees () const |
| unsigned int | numVars () const |
| unsigned int | numWeights () const |
| const PolynomialRing * | degreeRing () const |
| const Monoid & | degreeMonoid () const |
| void | one (MonomialInserter &m) const |
| bool | is_one (const Monom &m) const |
| void | copy (const Monom &m, MonomialInserter &result) const |
| void | mult (const Monom &m1, const Monom &m2, MonomialInserter &result) const |
| void | mult3 (const Monom &m1, const Monom &m2, const Monom &m3, MonomialInserter &result) const |
| int | compare (const Monom &m1, const Monom &m2) const |
| int | compare (const Word &w1, const Word &m2) const |
| bool | isEqual (const Monom &m1, const Monom &m2) const |
| int | index_of_variable (const Monom &m) const |
| void | var (int v, MonomialInserter &result) const |
| void | multi_degree (const Monom &m, monomial already_allocated_degree_vector) const |
| void | elem_text_out (buffer &o, const Monom &m1) const |
| void | getMonomial (Monom monom, std::vector< int > &result) const |
| void | getMonomialReversed (Monom monom, std::vector< int > &result) const |
| void | fromMonomial (const_monomial monom, MonomialInserter &result) const |
| void | wordFromMonom (Word &result, const Monom &m) const |
| void | wordPrefixFromMonom (Word &result, const Monom &m, int endIndex) const |
| void | wordSuffixFromMonom (Word &result, const Monom &m, int beginIndex) const |
| void | monomInsertFromWord (MonomialInserter &result, const Word &w) const |
| Monom | wordProductAsMonom (const Word &left, const Word &right, MemoryBlock &memBlock) const |
| Monom | wordProductAsMonom (const Word &left, const Word &mid, const Word &right, MemoryBlock &memBlock) const |
| Monom | wordProductAsMonom (const Word &left, const Monom &mid, const Word &right, MemoryBlock &memBlock) const |
| Word | wordProductAsWord (const Word &left, const Word &right, MemoryBlock &memBlock) const |
| Word | wordProductAsWord (const Word &left, const Word &mid, const Word &right, MemoryBlock &memBlock) const |
| int | wordHeft (Word &word) const |
| int | wordHeft (Word &word, int start_index) const |
| void | support (const Monom &m, std::vector< int > &result) const |
Private Member Functions | |
| int | wordLength (const Monom &m) const |
| void | setWeights (Monom &m) const |
| int | weightOfVar (int v, int wt) const |
| int | heftOfVar (int v) const |
| int | wordWeight (Word &word, const std::vector< int > &weight, int start_index) const |
Private Attributes | |
| const std::vector< std::string > | mVariableNames |
| const PolynomialRing * | mDegreeRing |
| const std::vector< int > | mDegrees |
| const std::vector< int > | mWeightVectors |
| const std::vector< int > | mHeftVector |
| std::vector< int > | mHeftDegrees |
| const int | mNumWeights |
| gc_vector< const int * > | mDegreeOfVar |
Additional Inherited Members | |
| 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) |
The free non-commutative monoid on a set of named variables, with monomial ordering and degree / weight machinery.
Owns the variable names, the multi-degree of each variable, a stack of mNumWeights weight vectors, and a heft vector. A Monom is laid out as [length, deg, w_0 ... w_{r-1}, v_0 ... v_s] — length, total degree, weight values, then the word itself. The class exposes the primitives the non-commutative arithmetic engines need: mult / mult3, compare / isEqual, conversion between Monoms, Words and the engine's Monomial varpower form, and helpers that allocate left-mid-right products into a MemoryBlock (the hot path for NCF4 row construction).
Definition at line 103 of file FreeMonoid.hpp.