Polynomial-ring view tuned for the inner loop of classical Buchberger Groebner-basis computations.
More...
|
| virtual | ~GBRing () |
| const Monoid * | get_flattened_monoid () const |
| const Ring * | get_flattened_coefficients () const |
| int | n_vars () const |
| void | memstats () |
| bool | is_skew_commutative () const |
| int | n_skew_commutative_vars () const |
| int | skew_variable (int i) const |
| const int * | skew_monomial_var (int i) const |
| bool | is_weyl_algebra () const |
| bool | is_schreyer_encoded () const |
| exponents_t | exponents_make () |
| void | exponents_delete (exponents_t e) |
| size_t | exponent_byte_size () const |
| const ring_elem | one () |
| void | gbvector_remove (gbvector *f) |
| gbvector * | gbvector_raw_term (ring_elem coeff, const int *monom, int comp) |
| gbvector * | gbvector_term (const FreeModule *F, ring_elem coeff, int comp) |
| gbvector * | gbvector_term (const FreeModule *F, ring_elem coeff, const int *monom, int comp) |
| gbvector * | gbvector_term_exponents (const FreeModule *F, ring_elem coeff, const int *exp, int comp) |
| gbvector * | gbvector_zero () const |
| void | gbvector_sort (const FreeModule *F, gbvector *&f) |
| bool | gbvector_is_zero (const gbvector *f) const |
| bool | gbvector_is_equal (const gbvector *f, const gbvector *g) const |
| int | gbvector_n_terms (const gbvector *f) const |
| void | gbvector_multidegree (const FreeModule *F, const gbvector *f, int *&result_degree) |
| int | gbvector_compare (const FreeModule *F, const gbvector *f, const gbvector *g) const |
| gbvector * | gbvector_lead_term (int n, const FreeModule *F, const gbvector *f) |
| gbvector * | gbvector_parallel_lead_terms (M2_arrayint w, const FreeModule *F, const gbvector *leadv, const gbvector *v) |
| void | gbvector_get_lead_monomial (const FreeModule *F, const gbvector *f, int *result) |
| void | gbvector_get_lead_exponents (const FreeModule *F, const gbvector *f, int *result) |
| int | gbvector_lead_component (const gbvector *f) |
| void | gbvector_mult_by_coeff_to (gbvector *f, ring_elem u) |
| gbvector * | gbvector_mult_by_coeff (const gbvector *f, ring_elem u) |
| void | gbvector_add_to_zzp (const FreeModule *F, gbvector *&f, gbvector *&g) |
| void | gbvector_add_to (const FreeModule *F, gbvector *&f, gbvector *&g) |
| void | gbvector_negate_to (gbvector *f) const |
| gbvector * | gbvector_copy (const gbvector *f) |
| void | find_reduction_coeffs (const FreeModule *F, const gbvector *f, const gbvector *g, ring_elem &u, ring_elem &v) |
| bool | find_reduction_coeffs_ZZ (const FreeModule *F, const gbvector *f, const gbvector *g, ring_elem &v) |
| void | find_reduction_monomial (const FreeModule *F, const gbvector *f, const gbvector *g, int &comp, int *&monom) |
| void | gbvector_mult_by_term (const FreeModule *F, const FreeModule *Fsyz, ring_elem a, const int *m, const gbvector *f, const gbvector *fsyz, gbvector *&result, gbvector *&esult_syz) |
| void | gbvector_reduce_lead_term (const FreeModule *F, const FreeModule *Fsyz, gbvector *flead, gbvector *&f, gbvector *&fsyz, const gbvector *g, const gbvector *gsyz, bool use_denom, ring_elem &denom) |
| void | gbvector_reduce_lead_term (const FreeModule *F, const FreeModule *Fsyz, gbvector *flead, gbvector *&f, gbvector *&fsyz, const gbvector *g, const gbvector *gsyz) |
| void | gbvector_reduce_with_marked_lead_term (const FreeModule *F, const FreeModule *Fsyz, gbvector *flead, gbvector *&f, gbvector *&fsyz, const gbvector *ginitial, const gbvector *g, const gbvector *gsyz, bool use_denom, ring_elem &denom) |
| bool | gbvector_reduce_lead_term_ZZ (const FreeModule *F, const FreeModule *Fsyz, gbvector *&f, gbvector *&fsyz, const gbvector *g, const gbvector *gsyz) |
| void | gbvector_cancel_lead_terms (const FreeModule *F, const FreeModule *Fsyz, const gbvector *f, const gbvector *fsyz, const gbvector *g, const gbvector *gsyz, gbvector *&result, gbvector *&result_syz) |
| void | gbvector_replace_2by2_ZZ (const FreeModule *F, const FreeModule *Fsyz, gbvector *&f, gbvector *&fsyz, gbvector *&g, gbvector *&gsyz) |
| void | gbvector_combine_lead_terms_ZZ (const FreeModule *F, const FreeModule *Fsyz, const gbvector *f, const gbvector *fsyz, const gbvector *g, const gbvector *gsyz, gbvector *&result, gbvector *&result_syz) |
| void | reduce_lead_term_heap (const FreeModule *F, const FreeModule *Fsyz, const gbvector *fcurrent_lead, const_exponents exp, gbvector *flead, gbvectorHeap &f, gbvectorHeap &fsyz, const gbvector *g, const gbvector *gsyz) |
| void | reduce_marked_lead_term_heap (const FreeModule *F, const FreeModule *Fsyz, const gbvector *fcurrent_lead, const_exponents exp, gbvector *flead, gbvectorHeap &f, gbvectorHeap &fsyz, const gbvector *marked_in_g, const gbvector *g, const gbvector *gsyz) |
| void | gbvector_remove_content (gbvector *f, gbvector *fsyz, bool use_denom, ring_elem &denom) |
| void | gbvector_remove_content (gbvector *f, gbvector *fsyz) |
| void | gbvector_auto_reduce (const FreeModule *F, const FreeModule *Fsyz, gbvector *&f, gbvector *&fsyz, const gbvector *g, const gbvector *gsyz) |
| void | gbvector_auto_reduce_ZZ (const FreeModule *F, const FreeModule *Fsyz, gbvector *&f, gbvector *&fsyz, const gbvector *g, const gbvector *gsyz) |
| void | gbvector_text_out (buffer &o, const FreeModule *F, const gbvector *f, int nterms=-1) const |
| void | gbvector_apply (const FreeModule *F, const FreeModule *Fsyz, gbvector *&f, gbvector *&fsyz, const gbvector *gsyz, const gbvector **elems, const gbvector **elems_syz, const gbvector **quotients) |
|
| gbvector * | new_raw_term () |
| void | gbvector_remove_term (gbvector *f) |
| gbvector * | gbvector_copy_term (const gbvector *t) |
| void | divide_exponents (const int *exp1, const int *exp2, int *result) const |
| void | exponent_syzygy (const int *exp1, const int *exp2, int *exp3, int *exp4) |
| virtual gbvector * | mult_by_term1 (const FreeModule *F, const gbvector *f, ring_elem u, const int *monom, int comp)=0 |
| gbvector * | mult_by_term (const FreeModule *F, const gbvector *f, ring_elem u, const int *monom, int comp) |
| int | skew_mult_sign (int *exp1, int *exp2) const |
| void | divide_coeff_exact_to_ZZ (gbvector *f, gmp_ZZ u) const |
| void | lower_content_ZZ (gbvector *f, mpz_ptr content) const |
| void | gbvector_remove_content_ZZ (gbvector *f, gbvector *fsyz, bool use_denom, ring_elem &denom) const |
| const gbvector * | find_coeff (const FreeModule *F, const gbvector *f, const gbvector *g) const |
| | GBRing (const Ring *K0, const Monoid *M0) |
Polynomial-ring view tuned for the inner loop of classical Buchberger Groebner-basis computations.
- Note
- AI-generated documentation. Verify against the source before relying on it.
Holds the coefficient ring, the (flattened) monoid, and the Schreyer-order machinery, and exposes the gbvector arithmetic primitives (gbvector_add_to, gbvector_mult_by_term, ...) that the GB inner loop calls millions of times. Subclasses (GBRingPoly, GBRingSkew, GBRingWeyl, GBRingWeylZZ, GBRingSolvable) override mult_by_term1 to encode ring-specific commutation rules. Built once per computation from a PolynomialRing and torn down at the end.
Definition at line 119 of file gbring.hpp.