Package edu.jas.poly
Class AlgebraicNumber<C extends RingElem<C>>
java.lang.Object
edu.jas.poly.AlgebraicNumber<C>
- All Implemented Interfaces:
AbelianGroupElem<AlgebraicNumber<C>>
,Element<AlgebraicNumber<C>>
,GcdRingElem<AlgebraicNumber<C>>
,MonoidElem<AlgebraicNumber<C>>
,RingElem<AlgebraicNumber<C>>
,Serializable
,Comparable<AlgebraicNumber<C>>
public class AlgebraicNumber<C extends RingElem<C>>
extends Object
implements GcdRingElem<AlgebraicNumber<C>>
Algebraic number class. Based on GenPolynomial with RingElem interface.
Objects of this class are immutable.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected int
Flag to remember if this algebraic number is a unit.final AlgebraicNumberRing
<C> Ring part of the data structure.final GenPolynomial
<C> Value part of the element data structure. -
Constructor Summary
ConstructorsConstructorDescriptionThe constructor creates a AlgebraicNumber object from a GenPolynomial object module.The constructor creates a AlgebraicNumber object from AlgebraicNumberRing modul and a GenPolynomial value. -
Method Summary
Modifier and TypeMethodDescriptionabs()
AlgebraicNumber absolute value.int
AlgebraicNumber comparison.copy()
Copy this.divide
(AlgebraicNumber<C> S) AlgebraicNumber division.AlgebraicNumber<C>[]
egcd
(AlgebraicNumber<C> S) AlgebraicNumber extended greatest common divisor.boolean
Comparison with any other object.factory()
Get the corresponding element factory.gcd
(AlgebraicNumber<C> S) AlgebraicNumber greatest common divisor.getVal()
Get the value part.int
hashCode()
Hash code for this AlgebraicNumber.inverse()
AlgebraicNumber inverse.boolean
isONE()
Is AlgebraicNumber one.boolean
Is AlgebraicNumber a root of unity.boolean
isUnit()
Is AlgebraicNumber unit.boolean
isZERO()
Is AlgebraicNumber zero.monic()
AlgebraicNumber monic.AlgebraicNumber multiplication.multiply
(AlgebraicNumber<C> S) AlgebraicNumber multiplication.multiply
(GenPolynomial<C> c) AlgebraicNumber multiplication.negate()
AlgebraicNumber negate.AlgebraicNumber<C>[]
Quotient and remainder by division of this by S.AlgebraicNumber remainder.int
signum()
AlgebraicNumber signum.subtract
(AlgebraicNumber<C> S) AlgebraicNumber subtraction.AlgebraicNumber summation.sum
(AlgebraicNumber<C> S) AlgebraicNumber summation.sum
(GenPolynomial<C> c) AlgebraicNumber summation.toScript()
Get a scripting compatible string representation.Get a scripting compatible string representation of the factory.toString()
Get the String representation as RingElem.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface edu.jas.structure.MonoidElem
leftDivide, leftRemainder, power, rightDivide, rightRemainder, twosidedDivide, twosidedRemainder
-
Field Details
-
ring
Ring part of the data structure. -
val
Value part of the element data structure. -
isunit
protected int isunitFlag to remember if this algebraic number is a unit. -1 is unknown, 1 is unit, 0 not a unit.
-
-
Constructor Details
-
AlgebraicNumber
The constructor creates a AlgebraicNumber object from AlgebraicNumberRing modul and a GenPolynomial value.- Parameters:
r
- ring AlgebraicNumberRing. a
- value GenPolynomial.
-
AlgebraicNumber
The constructor creates a AlgebraicNumber object from a GenPolynomial object module.- Parameters:
r
- ring AlgebraicNumberRing.
-
-
Method Details
-
getVal
Get the value part.- Returns:
- val.
-
factory
Get the corresponding element factory. -
copy
Copy this. -
isZERO
public boolean isZERO()Is AlgebraicNumber zero.- Specified by:
isZERO
in interfaceAbelianGroupElem<C extends RingElem<C>>
- Returns:
- If this is 0 then true is returned, else false.
- See Also:
-
isONE
public boolean isONE()Is AlgebraicNumber one.- Specified by:
isONE
in interfaceMonoidElem<C extends RingElem<C>>
- Returns:
- If this is 1 then true is returned, else false.
- See Also:
-
isUnit
public boolean isUnit()Is AlgebraicNumber unit.- Specified by:
isUnit
in interfaceMonoidElem<C extends RingElem<C>>
- Returns:
- If this is a unit then true is returned, else false.
- See Also:
-
isRootOfUnity
public boolean isRootOfUnity()Is AlgebraicNumber a root of unity.- Returns:
- true if |this**i| == 1, for some 0 < i ≤ deg(modul), else false.
-
toString
Get the String representation as RingElem. -
toScript
Get a scripting compatible string representation. -
toScriptFactory
Get a scripting compatible string representation of the factory.- Specified by:
toScriptFactory
in interfaceElement<C extends RingElem<C>>
- Returns:
- script compatible representation for this ElemFactory.
- See Also:
-
compareTo
AlgebraicNumber comparison. -
equals
Comparison with any other object. -
hashCode
public int hashCode()Hash code for this AlgebraicNumber. -
abs
AlgebraicNumber absolute value.- Specified by:
abs
in interfaceAbelianGroupElem<C extends RingElem<C>>
- Returns:
- the absolute value of this.
- See Also:
-
sum
AlgebraicNumber summation.- Specified by:
sum
in interfaceAbelianGroupElem<C extends RingElem<C>>
- Parameters:
S
- AlgebraicNumber.- Returns:
- this+S.
-
sum
AlgebraicNumber summation.- Parameters:
c
- coefficient.- Returns:
- this+c.
-
sum
AlgebraicNumber summation.- Parameters:
c
- polynomial.- Returns:
- this+c.
-
negate
AlgebraicNumber negate.- Specified by:
negate
in interfaceAbelianGroupElem<C extends RingElem<C>>
- Returns:
- -this.
- See Also:
-
signum
public int signum()AlgebraicNumber signum.- Specified by:
signum
in interfaceAbelianGroupElem<C extends RingElem<C>>
- Returns:
- signum(this).
- See Also:
-
subtract
AlgebraicNumber subtraction.- Specified by:
subtract
in interfaceAbelianGroupElem<C extends RingElem<C>>
- Parameters:
S
- AlgebraicNumber.- Returns:
- this-S.
-
divide
AlgebraicNumber division.- Specified by:
divide
in interfaceMonoidElem<C extends RingElem<C>>
- Parameters:
S
- AlgebraicNumber.- Returns:
- this/S.
-
inverse
AlgebraicNumber inverse.- Specified by:
inverse
in interfaceMonoidElem<C extends RingElem<C>>
- Returns:
- S with S = 1/this if defined.
- Throws:
NotInvertibleException
- if the element is not invertible.- See Also:
-
remainder
AlgebraicNumber remainder.- Specified by:
remainder
in interfaceMonoidElem<C extends RingElem<C>>
- Parameters:
S
- AlgebraicNumber.- Returns:
- this - (this/S)*S.
-
quotientRemainder
Quotient and remainder by division of this by S.- Specified by:
quotientRemainder
in interfaceMonoidElem<C extends RingElem<C>>
- Parameters:
S
- a AlgebraicNumber- Returns:
- [this/S, this - (this/S)*S].
-
multiply
AlgebraicNumber multiplication.- Specified by:
multiply
in interfaceMonoidElem<C extends RingElem<C>>
- Parameters:
S
- AlgebraicNumber.- Returns:
- this*S.
-
multiply
AlgebraicNumber multiplication.- Parameters:
c
- coefficient.- Returns:
- this*c.
-
multiply
AlgebraicNumber multiplication.- Parameters:
c
- polynomial.- Returns:
- this*c.
-
monic
AlgebraicNumber monic.- Returns:
- this with monic value part.
-
gcd
AlgebraicNumber greatest common divisor. -
egcd
AlgebraicNumber extended greatest common divisor.
-