Class AlgebraicNumberRing<C extends RingElem<C>>
java.lang.Object
edu.jas.poly.AlgebraicNumberRing<C>
- All Implemented Interfaces:
AbelianGroupFactory<AlgebraicNumber<C>>, ElemFactory<AlgebraicNumber<C>>, MonoidFactory<AlgebraicNumber<C>>, RingFactory<AlgebraicNumber<C>>, Serializable, Iterable<AlgebraicNumber<C>>
public class AlgebraicNumberRing<C extends RingElem<C>>
extends Object
implements RingFactory<AlgebraicNumber<C>>, Iterable<AlgebraicNumber<C>>
Algebraic number factory. Based on GenPolynomial factory with RingElem
interface. Objects of this class are immutable.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected intIndicator if this ring is a fieldprivate static final org.apache.logging.log4j.Loggerfinal GenPolynomial<C> Module part of the factory data structure.final GenPolynomialRing<C> Ring part of the factory data structure. -
Constructor Summary
ConstructorsConstructorDescriptionThe constructor creates a AlgebraicNumber factory object from a GenPolynomial objects module.AlgebraicNumberRing(GenPolynomial<C> m, boolean isField) The constructor creates a AlgebraicNumber factory object from a GenPolynomial objects module. -
Method Summary
Modifier and TypeMethodDescriptionCharacteristic of this ring.chineseRemainder(AlgebraicNumber<C> c, AlgebraicNumber<C> ci, AlgebraicNumber<C> a) AlgebraicNumber chinese remainder algorithm.copy(AlgebraicNumber<C> c) Copy AlgebraicNumber element c.intdepth()Depth of extension field tower.booleanComparison with any other object.longDegree of extension field.fillFromInteger(long a) Get a AlgebraicNumber element from a long value.Get an AlgebraicNumber element from a BigInteger value.fromInteger(long a) Get a AlgebraicNumber element from a long value.Get a AlgebraicNumber element from a BigInteger value.Get a list of the generating elements.intgetField()Get the internal field indicator.Get the generating element.getModul()Get the module part.getONE()Get the one element.getZERO()Get the zero element.inthashCode()Hash code for this AlgebraicNumber.interpolate(AlgebraicNumber<C> c, C ci, C am, C a) AlgebraicNumber interpolation algorithm.booleanQuery if this ring is associative.booleanQuery if this ring is commutative.booleanisField()Query if this ring is a field.booleanisFinite()Is this structure finite or infinite.iterator()Get a AlgebraicNumber iterator.Parse AlgebraicNumber from Reader.Parse AlgebraicNumber from String.random(int n) AlgebraicNumber random.AlgebraicNumber random.voidsetField(boolean field) Set field property of this ring.toScript()Get a scripting compatible string representation.toString()Get the String representation as RingFactory.longTotal degree of nested extension fields.Methods inherited from interface ElemFactory
valueOfMethods inherited from interface Iterable
forEach, spliterator
-
Field Details
-
ring
Ring part of the factory data structure. -
modul
Module part of the factory data structure. -
isField
protected int isFieldIndicator if this ring is a field -
logger
private static final org.apache.logging.log4j.Logger logger
-
-
Constructor Details
-
AlgebraicNumberRing
The constructor creates a AlgebraicNumber factory object from a GenPolynomial objects module.- Parameters:
m- module GenPolynomial.
-
AlgebraicNumberRing
The constructor creates a AlgebraicNumber factory object from a GenPolynomial objects module.- Parameters:
m- module GenPolynomial. isField- indicator if m is prime.
-
-
Method Details
-
getModul
-
copy
Copy AlgebraicNumber element c.- Specified by:
copyin interfaceElemFactory<C extends RingElem<C>>- Parameters:
c- algebraic number to copy.- Returns:
- a copy of c.
-
getZERO
Get the zero element.- Specified by:
getZEROin interfaceAbelianGroupFactory<C extends RingElem<C>>- Returns:
- 0 as AlgebraicNumber.
-
getONE
Get the one element.- Specified by:
getONEin interfaceMonoidFactory<C extends RingElem<C>>- Returns:
- 1 as AlgebraicNumber.
-
getGenerator
Get the generating element.- Returns:
- alpha as AlgebraicNumber.
-
generators
Get a list of the generating elements.- Specified by:
generatorsin interfaceElemFactory<C extends RingElem<C>>- Returns:
- list of generators for the algebraic structure.
- See Also:
-
isFinite
public boolean isFinite()Is this structure finite or infinite.- Specified by:
isFinitein interfaceElemFactory<C extends RingElem<C>>- Returns:
- true if this structure is finite, else false.
- See Also:
-
isCommutative
public boolean isCommutative()Query if this ring is commutative.- Specified by:
isCommutativein interfaceMonoidFactory<C extends RingElem<C>>- Returns:
- true if this ring is commutative, else false.
-
isAssociative
public boolean isAssociative()Query if this ring is associative.- Specified by:
isAssociativein interfaceMonoidFactory<C extends RingElem<C>>- Returns:
- true if this ring is associative, else false.
-
isField
public boolean isField()Query if this ring is a field.- Specified by:
isFieldin interfaceRingFactory<C extends RingElem<C>>- Returns:
- true if modul is prime, else false.
-
setField
public void setField(boolean field) Set field property of this ring.- Parameters:
field- true, if this ring is determined to be a field, false, if it is determined that it is not a field.
-
getField
public int getField()Get the internal field indicator.- Returns:
- internal field indicator.
-
characteristic
Characteristic of this ring.- Specified by:
characteristicin interfaceRingFactory<C extends RingElem<C>>- Returns:
- characteristic of this ring.
-
fillFromInteger
Get an AlgebraicNumber element from a BigInteger value. If a = a_k p^k + ... + a_0 p^0 then b = a_k x^k + ... + a_0 x^0, where p = characteristic( this ).- Parameters:
a- BigInteger.- Returns:
- b an AlgebraicNumber.
-
fillFromInteger
Get a AlgebraicNumber element from a long value.- Parameters:
a- long.- Returns:
- a AlgebraicNumber.
-
fromInteger
Get a AlgebraicNumber element from a BigInteger value.- Specified by:
fromIntegerin interfaceElemFactory<C extends RingElem<C>>- Parameters:
a- BigInteger.- Returns:
- a AlgebraicNumber.
-
fromInteger
Get a AlgebraicNumber element from a long value.- Specified by:
fromIntegerin interfaceElemFactory<C extends RingElem<C>>- Parameters:
a- long.- Returns:
- a AlgebraicNumber.
-
toString
-
toScript
-
equals
-
hashCode
-
random
AlgebraicNumber random.- Specified by:
randomin interfaceElemFactory<C extends RingElem<C>>- Parameters:
n- such that 0 ≤ v ≤ (2n-1).- Returns:
- a random integer mod modul.
-
random
AlgebraicNumber random.- Specified by:
randomin interfaceElemFactory<C extends RingElem<C>>- Parameters:
n- such that 0 ≤ v ≤ (2n-1).rnd- is a source for random bits.- Returns:
- a random integer mod modul.
-
parse
Parse AlgebraicNumber from String.- Specified by:
parsein interfaceElemFactory<C extends RingElem<C>>- Parameters:
s- String.- Returns:
- AlgebraicNumber from s.
-
parse
Parse AlgebraicNumber from Reader.- Specified by:
parsein interfaceElemFactory<C extends RingElem<C>>- Parameters:
r- Reader.- Returns:
- next AlgebraicNumber from r.
-
chineseRemainder
public AlgebraicNumber<C> chineseRemainder(AlgebraicNumber<C> c, AlgebraicNumber<C> ci, AlgebraicNumber<C> a) AlgebraicNumber chinese remainder algorithm. Assert deg(c.modul) ≥ deg(a.modul) and c.modul * a.modul = this.modul.- Parameters:
c- AlgebraicNumber.ci- inverse of c.modul in ring of a.a- other AlgebraicNumber.- Returns:
- S, with S mod c.modul == c and S mod a.modul == a.
-
interpolate
AlgebraicNumber interpolation algorithm. Assert deg(c.modul) ≥ deg(A.modul) and c.modul * A.modul = this.modul. Special case with deg(A.modul) == 1. Similar algorithm as chinese remainder algorithm.- Parameters:
c- AlgebraicNumber.ci- inverse of (c.modul)(a) in ring of A.am- trailing base coefficient of modul of other AlgebraicNumber A.a- value of other AlgebraicNumber A.- Returns:
- S, with S(c) == c and S(A) == a.
-
depth
public int depth()Depth of extension field tower.- Returns:
- number of nested algebraic extension fields
-
extensionDegree
public long extensionDegree()Degree of extension field.- Returns:
- degree of this algebraic extension field
-
totalExtensionDegree
public long totalExtensionDegree()Total degree of nested extension fields.- Returns:
- degree of tower of algebraic extension fields
-
iterator
-