Class MultipleFieldExtension<Term extends AMonomial<Term>,​mPoly extends AMultivariatePolynomial<Term,​mPoly>,​sPoly extends IUnivariatePolynomial<sPoly>>

java.lang.Object
cc.redberry.rings.ImageRing<sPoly,​mPoly>
cc.redberry.rings.poly.MultipleFieldExtension<Term,​mPoly,​sPoly>
All Implemented Interfaces:
IParser<mPoly>, Stringifiable<mPoly>, IPolynomialRing<mPoly>, Ring<mPoly>, Serializable, Iterable<mPoly>, Comparator<mPoly>

public class MultipleFieldExtension<Term extends AMonomial<Term>,​mPoly extends AMultivariatePolynomial<Term,​mPoly>,​sPoly extends IUnivariatePolynomial<sPoly>>
extends ImageRing<sPoly,​mPoly>
implements IPolynomialRing<mPoly>
Multiple field extension F(α_1, α_2, ..., α_N). Elements are represented as multivariate polynomials over (α_1, α_2, ..., α_N); internally all arithmetic operations are performed by switching to appropriate simple field extension F(γ) (accessible via getSimpleExtension() method) where γ is some primitive element (accessible via getPrimitiveElement() method) computed automatically. Representation of generating algebraic elements α_i as elements of this simple extension can be obtained via getGeneratorRep(int) method. Originally, generators are represented by their minimal polynomials over F(α_1, α_2, ..., α_i) ("tower" representation). To construct multiple field extensions one should use {@link #mkMultipleExtension(...)} and joinAlgebraicElement(UnivariatePolynomial).
Since:
2.5
See Also:
mkMultipleExtension(IUnivariatePolynomial), mkMultipleExtension(IUnivariatePolynomial...), mkSplittingField(IUnivariatePolynomial), Rings.MultipleFieldExtension(IUnivariatePolynomial[]), Rings.SplittingField(IUnivariatePolynomial), Serialized Form