Package edu.jas.poly
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 class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface edu.jas.structure.ElemFactory
valueOfMethods inherited from interface java.lang.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
Get the module part.- Returns:
- modul.
-
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
Get the String representation as RingFactory. -
toScript
Get a scripting compatible string representation.- Specified by:
toScriptin interfaceElemFactory<C extends RingElem<C>>- Returns:
- script compatible representation for this ElemFactory.
- See Also:
-
equals
Comparison with any other object. -
hashCode
public int hashCode()Hash code for this AlgebraicNumber. -
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
Get a AlgebraicNumber iterator. Note: Only for finite field coefficients or fields which are iterable.
-