|
Macaulay2 Engine
|
QRingInfo family — bookkeeping plus normal-form machinery attached to a PolyRingQuotient for R / I reductions. More...
Go to the source code of this file.
Classes | |
| class | QRingInfo |
| Bookkeeping helper holding the defining ideal of a polynomial-ring quotient R / I in the two representations the engine reduces against. More... | |
| class | QRingInfo_field |
| QRingInfo partial specialisation that adds the field-coefficient reduction tables: a MonomialIdeal for divisibility queries and a MonomialTable indexed by quotient_ideal slot. More... | |
| class | QRingInfo_field_basic |
| QRingInfo_field specialisation for basic-field coefficients (everything except QQ). More... | |
| class | QRingInfo_field_QQ |
| QRingInfo_field specialisation for QQ coefficients, which need denominator tracking through reductions. More... | |
| class | QRingInfo_ZZ |
| QRingInfo specialisation for quotients of polynomial rings over ZZ. More... | |
QRingInfo family — bookkeeping plus normal-form machinery attached to a PolyRingQuotient for R / I reductions.
Declares QRingInfo, the helper that holds the defining ideal of a polynomial-ring quotient in two redundant forms: VECTOR(Nterm*) quotient_ideal for ring_elem-side reduction, and VECTOR(gbvector*) quotient_gbvectors for the GB-tuned reduction path through gbring.hpp. Keeping both representations skips per-reduction conversion, and qring.cpp is what keeps them in sync via appendQuotientElement. The base class itself is a virtual shell: its normal_form and gbvector_normal_form are no-ops (the bodies cast their arguments to (void) and return), and its get_quotient_monomials / _MonomialTable / _MonomialTableZZ all return nullptr — the real reduction lives in three subclass branches.
QRingInfo_field adds a MonomialIdeal Rideal and a MonomialTable ringtable indexed by quotient_ideal slot; QRingInfo_field_basic (basic field coefficients) supplies reduce_lead_term_basic_field and the matching normal_form / gbvector_normal_form overrides, while QRingInfo_field_QQ does the same with a denominator-aware reduce_lead_term_QQ plus the three-argument gbvector_normal_form(F, f, use_denom, denom) overload. QRingInfo_ZZ swaps in a MonomialTableZZ and tracks the is_ZZ_quotient_ / ZZ_quotient_value_ pair so quotients whose defining ideal contains a non-zero integer can short- circuit coefficient reductions. QRingInfo is not itself a Ring — it is the data hung off PolyRingQuotient (a PolyRingFlat subclass in polyquotient.hpp), which is the Ring the rest of the engine sees.
Definition in file qring.hpp.