|
Macaulay2 Engine
|
Legacy Tower — Ring-derived iterated extension of Z/p (pre-aring). More...
#include "relem.hpp"Go to the source code of this file.
Classes | |
| class | Tower |
| Ring subclass for tower polynomial rings (Z/p)[x_0][x_1]...[x_{n-1}] modulo a chain of algebraic extensions. More... | |
Functions | |
| const RingElement * | towerGCD (const RingElement *F, const RingElement *G) |
| const RingElement * | towerExtendedGCD (const RingElement *F, const RingElement *G, const RingElement **A, const RingElement **B) |
Legacy Tower — Ring-derived iterated extension of Z/p (pre-aring).
Declares Tower, the original engine class for an iterated finite extension L_0 = Z/p, L_i = L_{i-1}[t_i] / f_i(t_i). Each instance carries its level in the chain (0 is the base Z/p), the variable count nvars, the user-supplied M2_ArrayString names, and a DRing *D pointing at the level's polynomial-representation back-end from dpoly.hpp — elements are polynomials in the current level's variable with coefficients drawn from the level below. Tower inherits directly from Ring and dispatches arithmetic through virtuals; the modern aring-tower.hpp::ARingTower (which inherits from RingInterface directly because its heap-pointer elements need a backing-ring reference at destruction) was written to replace it.
Beyond the standard Ring API, Tower exposes degreeInVariable, differentiate, extension_degree, power_mod (f^n mod g), lowerP (Frobenius-related), and translate to move elements in from a PolynomialRing. The free functions towerGCD and towerExtendedGCD wrap the GCD machinery from dpoly.hpp at the RingElement level so M2 code can compute polynomial GCDs over the tower.
Definition in file tower.hpp.