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 int
Indicator if this ring is a fieldprivate static final org.apache.logging.log4j.Logger
final 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.int
depth()
Depth of extension field tower.boolean
Comparison with any other object.long
Degree 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.int
getField()
Get the internal field indicator.Get the generating element.getModul()
Get the module part.getONE()
Get the one element.getZERO()
Get the zero element.int
hashCode()
Hash code for this AlgebraicNumber.interpolate
(AlgebraicNumber<C> c, C ci, C am, C a) AlgebraicNumber interpolation algorithm.boolean
Query if this ring is associative.boolean
Query if this ring is commutative.boolean
isField()
Query if this ring is a field.boolean
isFinite()
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.void
setField
(boolean field) Set field property of this ring.toScript()
Get a scripting compatible string representation.toString()
Get the String representation as RingFactory.long
Total degree of nested extension fields.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface edu.jas.structure.ElemFactory
valueOf
Methods 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:
copy
in interfaceElemFactory<C extends RingElem<C>>
- Parameters:
c
- algebraic number to copy.- Returns:
- a copy of c.
-
getZERO
Get the zero element.- Specified by:
getZERO
in interfaceAbelianGroupFactory<C extends RingElem<C>>
- Returns:
- 0 as AlgebraicNumber.
-
getONE
Get the one element.- Specified by:
getONE
in 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:
generators
in 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:
isFinite
in 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:
isCommutative
in 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:
isAssociative
in 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:
isField
in 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:
characteristic
in 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:
fromInteger
in interfaceElemFactory<C extends RingElem<C>>
- Parameters:
a
- BigInteger.- Returns:
- a AlgebraicNumber.
-
fromInteger
Get a AlgebraicNumber element from a long value.- Specified by:
fromInteger
in 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:
toScript
in 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:
random
in interfaceElemFactory<C extends RingElem<C>>
- Parameters:
n
- such that 0 ≤ v ≤ (2n-1).- Returns:
- a random integer mod modul.
-
random
AlgebraicNumber random.- Specified by:
random
in 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:
parse
in interfaceElemFactory<C extends RingElem<C>>
- Parameters:
s
- String.- Returns:
- AlgebraicNumber from s.
-
parse
Parse AlgebraicNumber from Reader.- Specified by:
parse
in 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.
-