Macaulay2 Engine
Loading...
Searching...
No Matches
tower.hpp File Reference

Legacy TowerRing-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 RingElementtowerGCD (const RingElement *F, const RingElement *G)
const RingElementtowerExtendedGCD (const RingElement *F, const RingElement *G, const RingElement **A, const RingElement **B)

Detailed Description

Legacy TowerRing-derived iterated extension of Z/p (pre-aring).

Note
AI-generated documentation. Verify against the source before relying on it.

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.

See also
aring-tower.hpp
ring.hpp
dpoly.hpp

Definition in file tower.hpp.