edu.jas.application
Class Residue<C extends GcdRingElem<C>>

java.lang.Object
  extended by edu.jas.application.Residue<C>
All Implemented Interfaces:
AbelianGroupElem<Residue<C>>, Element<Residue<C>>, GcdRingElem<Residue<C>>, MonoidElem<Residue<C>>, RingElem<Residue<C>>, java.io.Serializable, java.lang.Cloneable, java.lang.Comparable<Residue<C>>

public class Residue<C extends GcdRingElem<C>>
extends java.lang.Object
implements GcdRingElem<Residue<C>>

Residue ring element based on GenPolynomial with RingElem interface. Objects of this class are (nearly) immutable.

Author:
Heinz Kredel
See Also:
Serialized Form

Field Summary
protected  int isunit
          Flag to remember if this residue element is a unit
 ResidueRing<C> ring
          Residue class factory data structure.
 GenPolynomial<C> val
          Value part of the element data structure.
 
Constructor Summary
Residue(ResidueRing<C> r)
          The constructor creates a Residue object from a ring factory.
Residue(ResidueRing<C> r, GenPolynomial<C> a)
          The constructor creates a Residue object from a ring factory and a polynomial.
Residue(ResidueRing<C> r, GenPolynomial<C> a, int u)
          The constructor creates a Residue object from a ring factory, a polynomial and an indicator if a is a unit.
 
Method Summary
 Residue<C> abs()
          Residue absolute value.
 Residue<C> clone()
          Clone this.
 int compareTo(Residue<C> b)
          Residue comparison.
 Residue<C> divide(Residue<C> S)
          Residue division.
 Residue<C>[] egcd(Residue<C> b)
          Extended greatest common divisor.
 boolean equals(java.lang.Object b)
          Comparison with any other object.
 ResidueRing<C> factory()
          Get the corresponding element factory.
 Residue<C> gcd(Residue<C> b)
          Greatest common divisor.
 int hashCode()
          Hash code for this local.
 Residue<C> inverse()
          Residue inverse.
 boolean isConstant()
          Is Residue a constant.
 boolean isONE()
          Is Residue one.
 boolean isUnit()
          Is Residue unit.
 boolean isZERO()
          Is Residue zero.
 Residue<C> monic()
          Residue monic.
 Residue<C> multiply(Residue<C> S)
          Residue multiplication.
 Residue<C> negate()
          Residue negate.
 Residue<C> remainder(Residue<C> S)
          Residue remainder.
 int signum()
          Residue signum.
 Residue<C> subtract(Residue<C> S)
          Residue subtraction.
 Residue<C> sum(Residue<C> S)
          Residue summation.
 java.lang.String toScript()
          Get a scripting compatible string representation.
 java.lang.String toScriptFactory()
          Get a scripting compatible string representation of the factory.
 java.lang.String toString()
          Get the String representation as RingElem.
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

ring

public final ResidueRing<C extends GcdRingElem<C>> ring
Residue class factory data structure.


val

public final GenPolynomial<C extends GcdRingElem<C>> val
Value part of the element data structure.


isunit

protected int isunit
Flag to remember if this residue element is a unit. -1 is unknown, 1 is unit, 0 not a unit.

Constructor Detail

Residue

public Residue(ResidueRing<C> r)
The constructor creates a Residue object from a ring factory.

Parameters:
r - ring factory.

Residue

public Residue(ResidueRing<C> r,
               GenPolynomial<C> a)
The constructor creates a Residue object from a ring factory and a polynomial.

Parameters:
r - ring factory.
a - polynomial list.

Residue

public Residue(ResidueRing<C> r,
               GenPolynomial<C> a,
               int u)
The constructor creates a Residue object from a ring factory, a polynomial and an indicator if a is a unit.

Parameters:
r - ring factory.
a - polynomial list.
u - isunit indicator, -1, 0, 1.
Method Detail

factory

public ResidueRing<C> factory()
Get the corresponding element factory.

Specified by:
factory in interface Element<Residue<C extends GcdRingElem<C>>>
Returns:
factory for this Element.
See Also:
Element.factory()

clone

public Residue<C> clone()
Clone this.

Overrides:
clone in class java.lang.Object
See Also:
Object.clone()

isZERO

public boolean isZERO()
Is Residue zero.

Specified by:
isZERO in interface AbelianGroupElem<Residue<C extends GcdRingElem<C>>>
Returns:
If this is 0 then true is returned, else false.
See Also:
AbelianGroupElem.isZERO()

isONE

public boolean isONE()
Is Residue one.

Specified by:
isONE in interface MonoidElem<Residue<C extends GcdRingElem<C>>>
Returns:
If this is 1 then true is returned, else false.
See Also:
MonoidElem.isONE()

isUnit

public boolean isUnit()
Is Residue unit.

Specified by:
isUnit in interface MonoidElem<Residue<C extends GcdRingElem<C>>>
Returns:
If this is a unit then true is returned, else false.
See Also:
MonoidElem.isUnit()

isConstant

public boolean isConstant()
Is Residue a constant.

Returns:
true if this.val is a constant polynomial, else false.

toString

public java.lang.String toString()
Get the String representation as RingElem.

Overrides:
toString in class java.lang.Object
See Also:
Object.toString()

toScript

public java.lang.String toScript()
Get a scripting compatible string representation.

Specified by:
toScript in interface Element<Residue<C extends GcdRingElem<C>>>
Returns:
script compatible representation for this Element.
See Also:
Element.toScript()

toScriptFactory

public java.lang.String toScriptFactory()
Get a scripting compatible string representation of the factory.

Specified by:
toScriptFactory in interface Element<Residue<C extends GcdRingElem<C>>>
Returns:
script compatible representation for this ElemFactory.
See Also:
Element.toScriptFactory()

compareTo

public int compareTo(Residue<C> b)
Residue comparison.

Specified by:
compareTo in interface Element<Residue<C extends GcdRingElem<C>>>
Specified by:
compareTo in interface java.lang.Comparable<Residue<C extends GcdRingElem<C>>>
Parameters:
b - Residue.
Returns:
sign(this-b), 0 means that this and b are equivalent in this residue class ring.

equals

public boolean equals(java.lang.Object b)
Comparison with any other object.

Specified by:
equals in interface Element<Residue<C extends GcdRingElem<C>>>
Overrides:
equals in class java.lang.Object
Returns:
true means that this and b are equivalent in this residue class ring.
See Also:
Object.equals(java.lang.Object)

hashCode

public int hashCode()
Hash code for this local.

Specified by:
hashCode in interface Element<Residue<C extends GcdRingElem<C>>>
Overrides:
hashCode in class java.lang.Object
Returns:
the hashCode.
See Also:
Object.hashCode()

abs

public Residue<C> abs()
Residue absolute value.

Specified by:
abs in interface AbelianGroupElem<Residue<C extends GcdRingElem<C>>>
Returns:
the absolute value of this.
See Also:
AbelianGroupElem.abs()

sum

public Residue<C> sum(Residue<C> S)
Residue summation.

Specified by:
sum in interface AbelianGroupElem<Residue<C extends GcdRingElem<C>>>
Parameters:
S - Residue.
Returns:
this+S.

negate

public Residue<C> negate()
Residue negate.

Specified by:
negate in interface AbelianGroupElem<Residue<C extends GcdRingElem<C>>>
Returns:
-this.
See Also:
AbelianGroupElem.negate()

signum

public int signum()
Residue signum.

Specified by:
signum in interface AbelianGroupElem<Residue<C extends GcdRingElem<C>>>
Returns:
signum(this).
See Also:
AbelianGroupElem.signum()

subtract

public Residue<C> subtract(Residue<C> S)
Residue subtraction.

Specified by:
subtract in interface AbelianGroupElem<Residue<C extends GcdRingElem<C>>>
Parameters:
S - Residue.
Returns:
this-S.

divide

public Residue<C> divide(Residue<C> S)
Residue division.

Specified by:
divide in interface MonoidElem<Residue<C extends GcdRingElem<C>>>
Parameters:
S - Residue.
Returns:
this/S.

inverse

public Residue<C> inverse()
Residue inverse.

Specified by:
inverse in interface MonoidElem<Residue<C extends GcdRingElem<C>>>
Returns:
S with S = 1/this if defined.
See Also:
MonoidElem.inverse()

remainder

public Residue<C> remainder(Residue<C> S)
Residue remainder.

Specified by:
remainder in interface MonoidElem<Residue<C extends GcdRingElem<C>>>
Parameters:
S - Residue.
Returns:
this - (this/S)*S.

multiply

public Residue<C> multiply(Residue<C> S)
Residue multiplication.

Specified by:
multiply in interface MonoidElem<Residue<C extends GcdRingElem<C>>>
Parameters:
S - Residue.
Returns:
this*S.

monic

public Residue<C> monic()
Residue monic.

Returns:
this with monic value part.

gcd

public Residue<C> gcd(Residue<C> b)
Greatest common divisor.

Specified by:
gcd in interface RingElem<Residue<C extends GcdRingElem<C>>>
Parameters:
b - other element.
Returns:
gcd(this,b).

egcd

public Residue<C>[] egcd(Residue<C> b)
Extended greatest common divisor. Note: Not implemented, throws UnsupportedOperationException.

Specified by:
egcd in interface RingElem<Residue<C extends GcdRingElem<C>>>
Parameters:
b - other element.
Returns:
[ gcd(this,b), c1, c2 ] with c1*this + c2*b = gcd(this,b).