Macaulay2 Engine
Loading...
Searching...
No Matches
reducedgb-field-local.hpp
Go to the documentation of this file.
1// Copyright 2005, Michael E. Stillman
2
3#ifndef _reducedgb_field_local_
4#define _reducedgb_field_local_
5
6#include "reducedgb-field.hpp"
7class GBWeight;
8
15{
16 friend ReducedGB *ReducedGB::create(const PolynomialRing *originalR0,
17 const FreeModule *F0,
18 const FreeModule *Fsyz0,
19 const GBWeight *wt0);
20 // The polynomials themselves are in MinimalGB
21 // The monomial ideals are in MinimalGB_Field
22 protected:
36 {
38 int size;
39 int alpha;
40 };
41
42 MonomialTable *T1; // elements added in
43 const GBWeight *wt;
44 VECTOR(divisor_info) ring_elems; // these do not need to be saved.
46 gb_elems; // these polynomials are the same as in superclass
47 VECTOR(divisor_info) new_poly_elems; // polynomials here need to be freed
48
49 VECTOR(int) alpha; // for GB array
50 VECTOR(int) ring_alpha; // for quotient ring elements
51 VECTOR(int) newpol_alpha; // These next two are local values...
52 VECTOR(POLY) newpol;
53
55 int h_comp,
56 int h_deg,
57 int &h_alpha, // result value
58 POLY &result_g, // result value
59 int &result_g_alpha); // result value
60
61 void reset_table();
62
63 void store_in_table(const POLY &h, exponents_t h_exp, int h_comp, int h_alpha);
64
66 const PolynomialRing *originalR0,
67 const FreeModule *F0,
68 const FreeModule *Fsyz0,
69 const GBWeight *wt0);
70
71 public:
72 virtual ~ReducedGB_Field_Local();
73
74 virtual void remove_gb() {}
75 virtual void minimalize(const VECTOR(POLY) & polys0,
76 bool auto_reduced); // last argument is ignored
77
78 virtual void remainder(POLY &f, bool use_denom, ring_elem &denom);
79
80 virtual void remainder(gbvector *&f, bool use_denom, ring_elem &denom);
81};
82
83#endif
84
85// Local Variables:
86// compile-command: "make -C $M2BUILDDIR/Macaulay2/e "
87// indent-tabs-mode: nil
88// End:
exponents::Exponents exponents_t
Engine-side free module R^n over a Ring.
Definition freemod.hpp:66
Polynomial-ring view tuned for the inner loop of classical Buchberger Groebner-basis computations.
Definition gbring.hpp:120
Heuristic-weight evaluator for gbvectors, used during Groebner basis computation to drive the S-pair ...
Definition gbweight.hpp:67
Indexed table of monomials with fast "find a divisor" lookup, keyed by a free integer val per entry.
Definition montable.hpp:81
Abstract base for the engine's polynomial-ring hierarchy.
Definition polyring.hpp:96
virtual void remainder(POLY &f, bool use_denom, ring_elem &denom)
VECTOR(divisor_info) gb_elems
ReducedGB_Field_Local(GBRing *R0, const PolynomialRing *originalR0, const FreeModule *F0, const FreeModule *Fsyz0, const GBWeight *wt0)
VECTOR(divisor_info) new _poly_elems
VECTOR(divisor_info) ring_elems
bool find_good_divisor(exponents_t h_exp, int h_comp, int h_deg, int &h_alpha, POLY &result_g, int &result_g_alpha)
VECTOR(int) ring_alpha
VECTOR(POLY) new pol
VECTOR(int) new pol_alpha
virtual void minimalize(const VECTOR(POLY) &polys0, bool auto_reduced)
void store_in_table(const POLY &h, exponents_t h_exp, int h_comp, int h_alpha)
ReducedGB_Field(GBRing *R0, const PolynomialRing *originalR0, const FreeModule *F0, const FreeModule *Fsyz0)
static ReducedGB * create(const PolynomialRing *originalR0, const FreeModule *F0, const FreeModule *Fsyz0, const GBWeight *wt0=nullptr)
Definition reducedgb.cpp:11
ReducedGB(GBRing *R0, const PolynomialRing *originalR0, const FreeModule *F0, const FreeModule *Fsyz0)
Definition reducedgb.cpp:35
#define VECTOR(T)
Definition newdelete.hpp:78
#define POLY(q)
Definition poly.cpp:23
Per-element bookkeeping record used by ReducedGB_Field_Local during local-ring GB minimisation.