Macaulay2 Engine
Loading...
Searching...
No Matches
monoid.cpp
Go to the documentation of this file.
1// (c) 1994-2002 Michael E. Stillman
2
3#include "interface/monoid.h"
4
5#include "buffer.hpp"
6#include "error.h"
7#include "monoid.hpp"
8#include "ring.hpp"
9#include "util.hpp"
10
12{
13 return Monoid::get_trivial_monoid(); // Set up in IM2_initialize()
14}
15
16const Monoid* /* or Null */ rawMonoid(const MonomialOrdering* mo,
17 const Ring* deg_ring,
18 M2_ArrayString names,
19 M2_arrayint degs,
20 M2_arrayint hefts)
21{
22 const auto P = deg_ring->cast_to_PolynomialRing();
23 if (P == nullptr)
24 {
25 ERROR("expected polynomial ring");
26 return nullptr;
27 }
28 return Monoid::create(mo,
29 P,
33}
34
35int rawMonoidNumberOfBlocks(const Monoid* M) { return M->num_parts(); }
36
37unsigned int rawMonoidHash(const Monoid* M) { return M->hash(); }
38
39M2_string rawMonoidToString(const Monoid* M)
40{
41 buffer o;
42 M->text_out(o);
43 return o.to_string();
44}
45
47{
48 auto result = M2_makearrayint(M->n_vars());
49 M->to_expvector(d, result->array);
50 return result;
51}
52
53// Local Variables:
54// indent-tabs-mode: nil
55// End:
Append-only GC-backed byte buffer used throughout the engine for text output.
void to_expvector(const_monomial m, exponents_t result_exp) const
Definition monoid.cpp:747
void text_out(buffer &o) const
Definition monoid.cpp:305
int n_vars() const
Definition monoid.hpp:207
static Monoid * create(const MonomialOrdering *mo, const PolynomialRing *DR, const std::vector< std::string > &names, const std::vector< int > &degs, const std::vector< int > &hefts)
Definition monoid.cpp:61
int num_parts() const
Definition monoid.cpp:385
static Monoid * get_trivial_monoid()
Definition monoid.cpp:54
Engine-side commutative monomial monoid: variable names, ordering, multidegree machinery,...
Definition monoid.hpp:89
unsigned int hash() const
Definition hash.hpp:106
virtual const PolynomialRing * cast_to_PolynomialRing() const
Definition ring.hpp:243
xxx xxx xxx
Definition ring.hpp:102
M2_string to_string()
Definition buffer.cpp:20
Engine error-reporting primitives: ERROR, INTERNAL_ERROR, error, error_message.
const int * const_monomial
Definition imonorder.hpp:45
M2_arrayint to_degree_vector(const Monoid *M, const_monomial d)
Definition monoid.cpp:46
int rawMonoidNumberOfBlocks(const Monoid *M)
Definition monoid.cpp:35
const Monoid * rawMonoid(const MonomialOrdering *mo, const Ring *deg_ring, M2_ArrayString names, M2_arrayint degs, M2_arrayint hefts)
Definition monoid.cpp:16
unsigned int rawMonoidHash(const Monoid *M)
Definition monoid.cpp:37
const Monoid * rawTrivialMonoid()
Definition monoid.cpp:11
M2_string rawMonoidToString(const Monoid *M)
Definition monoid.cpp:39
const int ERROR
Definition m2-mem.cpp:55
VALGRIND_MAKE_MEM_DEFINED & result(result)
M2_arrayint M2_makearrayint(int n)
Definition m2-types.cpp:6
Engine-boundary C API for constructing and inspecting Monoid objects.
Monoid — variable count, naming, grading, and monomial order of a polynomial ring.
Ring — the legacy abstract base class for every coefficient and polynomial ring.
Front-end-side description of a monomial ordering as a list of mon_part blocks.
void M2_ArrayString_to_stdvector(M2_ArrayString strs, std::vector< std::string > &result)
Definition util.hpp:52
std::vector< T > M2_arrayint_to_stdvector(M2_arrayint arr)
Definition util.hpp:96
Conversion helpers between M2 boundary types and standard C++ containers.