Package cc.redberry.rings.poly
Class FiniteField<E extends IUnivariatePolynomial<E>>
- java.lang.Object
-
- cc.redberry.rings.ARing<E>
-
- cc.redberry.rings.poly.SimpleFieldExtension<E>
-
- cc.redberry.rings.poly.FiniteField<E>
-
- Type Parameters:
E
- type of polynomials that represent elements of this Galois field
- All Implemented Interfaces:
IParser<E>
,Stringifiable<E>
,IPolynomialRing<E>
,Ring<E>
,Serializable
,Iterable<E>
,Comparator<E>
public final class FiniteField<E extends IUnivariatePolynomial<E>> extends SimpleFieldExtension<E>
Galois fieldGF(p, q)
. Galois field is represented as a quotient ringF[x]/<m(x)>
with given irreducible polynomialm(x)
(minimal polynomial); cardinality of then field is thanp^q
wherep
is the cardinality ofF
andq
is the degree of minimal polynomial. Since Galois field is in fact a simple field extension it inherits all corresponding methods.- Since:
- 1.0
- See Also:
AlgebraicNumberField
,Rings.GF(IUnivariatePolynomial)
,Rings.GF(long, int)
, Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static FiniteField<UnivariatePolynomialZp64>
GF17p5
GF(17^5)static FiniteField<UnivariatePolynomialZp64>
GF27
GF(3^3)
-
Constructor Summary
Constructors Constructor Description FiniteField(E minimalPoly)
Constructs finite field from the specified irreducible polynomial.
-
Method Summary
Modifier and Type Method Description E[]
divideAndRemainder(E a, E b)
Returns quotient and remainder ofdividend / divider
E
gcd(E a, E b)
Returns the greatest common divisor of two elementsboolean
isField()
Returns whether this ring is a fieldboolean
isUnit(E element)
Tests whether specified element is a ring unitIterator<E>
iterator()
Returns iterator over all field elementsE
remainder(E dividend, E divider)
Returns the remainder ofdividend / divider
-
Methods inherited from class cc.redberry.rings.poly.SimpleFieldExtension
add, addMutable, asMultipleExtension, cardinality, characteristic, compare, conjugatesProduct, copy, createArray, createArray2d, createArray2d, degree, equals, factor, factory, generator, getMinimalPolynomial, getMinimalPolynomialRef, getOne, getZero, hashCode, isEuclideanRing, isInTheBaseField, isOne, isZero, minimalPolynomial, multiply, multiplyMutable, negate, negateMutable, norm, normOfPolynomial, normOfPolynomial, nVariables, parse, randomElement, reciprocal, shouldReduceFast, subtract, subtractMutable, toString, toString, toString, trace, valueOf, valueOf, valueOfBigInteger, variable
-
Methods inherited from class cc.redberry.rings.ARing
isPerfectPower, perfectPowerBase, perfectPowerExponent
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.util.Comparator
reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
-
Methods inherited from interface cc.redberry.rings.poly.IPolynomialRing
mkCoder, parse, signum
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Methods inherited from interface cc.redberry.rings.Ring
abs, add, createArray, createArray, createArray, createZeroesArray, createZeroesArray2d, decrement, divideExact, divideExactMutable, divideOrNull, extendedGCD, factorial, factorSquareFree, fillZeros, firstBezoutCoefficient, gcd, gcd, getNegativeOne, increment, isFinite, isFiniteField, isMinusOne, isPerfectPower, isUnitOrZero, lcm, lcm, lcm, max, min, multiply, multiply, multiply, perfectPowerBase, perfectPowerExponent, pow, pow, pow, quotient, randomElement, randomElementTree, randomElementTree, randomNonZeroElement, setToValueOf, valueOf
-
-
-
-
Field Detail
-
GF27
public static final FiniteField<UnivariatePolynomialZp64> GF27
GF(3^3)
-
GF17p5
public static final FiniteField<UnivariatePolynomialZp64> GF17p5
GF(17^5)
-
-
Constructor Detail
-
FiniteField
public FiniteField(E minimalPoly)
Constructs finite field from the specified irreducible polynomial.NOTE: irreducibility test for the minimal polynomial is not performed here, use
IrreduciblePolynomials.irreducibleQ(IUnivariatePolynomial)
to test irreducibility.- Parameters:
minimalPoly
- the minimal polynomial
-
-
Method Detail
-
isField
public boolean isField()
Description copied from interface:Ring
Returns whether this ring is a field- Returns:
- whether this ring is a field
-
isUnit
public boolean isUnit(E element)
Description copied from interface:Ring
Tests whether specified element is a ring unit- Parameters:
element
- the ring element- Returns:
- whether specified element is a ring unit
- See Also:
Ring.isOne(Object)
-
gcd
public E gcd(E a, E b)
Description copied from interface:Ring
Returns the greatest common divisor of two elements- Parameters:
a
- the first elementb
- the second element- Returns:
- gcd
-
divideAndRemainder
public E[] divideAndRemainder(E a, E b)
Description copied from interface:Ring
Returns quotient and remainder ofdividend / divider
- Parameters:
a
- the dividendb
- the divider- Returns:
{quotient, remainder}
-
remainder
public E remainder(E dividend, E divider)
Description copied from interface:Ring
Returns the remainder ofdividend / divider
- Parameters:
dividend
- the dividenddivider
- the divider- Returns:
- the remainder of
dividend / divider
-
-