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

java.lang.Object
  extended by edu.jas.application.QuotientRing<C>
All Implemented Interfaces:
AbelianGroupFactory<Quotient<C>>, ElemFactory<Quotient<C>>, MonoidFactory<Quotient<C>>, RingFactory<Quotient<C>>, java.io.Serializable

public class QuotientRing<C extends GcdRingElem<C>>
extends java.lang.Object
implements RingFactory<Quotient<C>>

Quotient ring factory based on GenPolynomial with RingElem interface. Objects of this class are immutable.

Author:
Heinz Kredel
See Also:
Serialized Form

Field Summary
 GreatestCommonDivisorAbstract engine
          GCD engine of the factory.
 GenPolynomialRing<C> ring
          Polynomial ring of the factory.
 boolean ufdGCD
          Use GCD of package edu.jas.ufd.
 
Constructor Summary
QuotientRing(GenPolynomialRing<C> r)
          The constructor creates a QuotientRing object from a GenPolynomialRing and a GenPolynomial list.
QuotientRing(GenPolynomialRing<C> r, boolean ufdGCD)
          The constructor creates a QuotientRing object from a GenPolynomialRing and a GenPolynomial list.
 
Method Summary
 java.math.BigInteger characteristic()
          Characteristic of this ring.
 Quotient<C> copy(Quotient<C> c)
          Copy Quotient element c.
protected  GenPolynomial<C> divide(GenPolynomial<C> n, GenPolynomial<C> d)
          Divide.
 boolean equals(java.lang.Object b)
          Comparison with any other object.
 Quotient<C> fromInteger(java.math.BigInteger a)
          Get a Quotient element from a BigInteger value.
 Quotient<C> fromInteger(long a)
          Get a Quotient element from a long value.
protected  GenPolynomial<C> gcd(GenPolynomial<C> n, GenPolynomial<C> d)
          Greatest common divisor.
 Quotient<C> getONE()
          Get the one element.
 Quotient<C> getZERO()
          Get the zero element.
 int hashCode()
          Hash code for this quotient ring.
 boolean isAssociative()
          Query if this ring is associative.
 boolean isCommutative()
          Query if this ring is commutative.
 boolean isField()
          Query if this ring is a field.
 Quotient<C> parse(java.io.Reader r)
          Parse Quotient from Reader.
 Quotient<C> parse(java.lang.String s)
          Parse Quotient from String.
 Quotient<C> random(int n)
          Quotient random.
 Quotient<C> random(int k, int l, int d, float q)
          Generate a random residum polynomial.
 Quotient<C> random(int n, java.util.Random rnd)
          Quotient random.
protected  GenPolynomial<C> syzGcd(GenPolynomial<C> n, GenPolynomial<C> d)
          Greatest common divisor.
protected  GenPolynomial<C> syzLcm(GenPolynomial<C> n, GenPolynomial<C> d)
          Least common multiple.
 java.lang.String toString()
          Get the String representation as RingFactory.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

ring

public final GenPolynomialRing<C extends GcdRingElem<C>> ring
Polynomial ring of the factory.


engine

public final GreatestCommonDivisorAbstract engine
GCD engine of the factory.


ufdGCD

public final boolean ufdGCD
Use GCD of package edu.jas.ufd.

Constructor Detail

QuotientRing

public QuotientRing(GenPolynomialRing<C> r)
The constructor creates a QuotientRing object from a GenPolynomialRing and a GenPolynomial list.

Parameters:
r - polynomial ring.

QuotientRing

public QuotientRing(GenPolynomialRing<C> r,
                    boolean ufdGCD)
The constructor creates a QuotientRing object from a GenPolynomialRing and a GenPolynomial list.

Parameters:
r - polynomial ring.
Method Detail

divide

protected GenPolynomial<C> divide(GenPolynomial<C> n,
                                  GenPolynomial<C> d)
Divide.

Parameters:
n - first polynomial.
d - second polynomial.
Returns:
divide(n,d)

gcd

protected GenPolynomial<C> gcd(GenPolynomial<C> n,
                               GenPolynomial<C> d)
Greatest common divisor.

Parameters:
n - first polynomial.
d - second polynomial.
Returns:
gcd(n,d)

syzLcm

protected GenPolynomial<C> syzLcm(GenPolynomial<C> n,
                                  GenPolynomial<C> d)
Least common multiple. Just for fun, is not efficient.

Parameters:
n - first polynomial.
d - second polynomial.
Returns:
lcm(n,d)

syzGcd

protected GenPolynomial<C> syzGcd(GenPolynomial<C> n,
                                  GenPolynomial<C> d)
Greatest common divisor. Just for fun, is not efficient.

Parameters:
n - first polynomial.
d - second polynomial.
Returns:
gcd(n,d)

copy

public Quotient<C> copy(Quotient<C> c)
Copy Quotient element c.

Specified by:
copy in interface ElemFactory<Quotient<C extends GcdRingElem<C>>>
Parameters:
c -
Returns:
a copy of c.

getZERO

public Quotient<C> getZERO()
Get the zero element.

Specified by:
getZERO in interface AbelianGroupFactory<Quotient<C extends GcdRingElem<C>>>
Returns:
0 as Quotient.

getONE

public Quotient<C> getONE()
Get the one element.

Specified by:
getONE in interface MonoidFactory<Quotient<C extends GcdRingElem<C>>>
Returns:
1 as Quotient.

isCommutative

public boolean isCommutative()
Query if this ring is commutative.

Specified by:
isCommutative in interface MonoidFactory<Quotient<C extends GcdRingElem<C>>>
Returns:
true if this ring is commutative, else false.

isAssociative

public boolean isAssociative()
Query if this ring is associative.

Specified by:
isAssociative in interface MonoidFactory<Quotient<C extends GcdRingElem<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 interface RingFactory<Quotient<C extends GcdRingElem<C>>>
Returns:
true.

characteristic

public java.math.BigInteger characteristic()
Characteristic of this ring.

Specified by:
characteristic in interface RingFactory<Quotient<C extends GcdRingElem<C>>>
Returns:
characteristic of this ring.

fromInteger

public Quotient<C> fromInteger(java.math.BigInteger a)
Get a Quotient element from a BigInteger value.

Specified by:
fromInteger in interface ElemFactory<Quotient<C extends GcdRingElem<C>>>
Parameters:
a - BigInteger.
Returns:
a Quotient.

fromInteger

public Quotient<C> fromInteger(long a)
Get a Quotient element from a long value.

Specified by:
fromInteger in interface ElemFactory<Quotient<C extends GcdRingElem<C>>>
Parameters:
a - long.
Returns:
a Quotient.

toString

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

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

equals

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

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

hashCode

public int hashCode()
Hash code for this quotient ring.

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

random

public Quotient<C> random(int n)
Quotient random.

Specified by:
random in interface ElemFactory<Quotient<C extends GcdRingElem<C>>>
Parameters:
n - such that 0 ≤ v ≤ (2n-1).
Returns:
a random residue element.

random

public Quotient<C> random(int k,
                          int l,
                          int d,
                          float q)
Generate a random residum polynomial.

Parameters:
k - bitsize of random coefficients.
l - number of terms.
d - maximal degree in each variable.
q - density of nozero exponents.
Returns:
a random residue polynomial.

random

public Quotient<C> random(int n,
                          java.util.Random rnd)
Quotient random.

Specified by:
random in interface ElemFactory<Quotient<C extends GcdRingElem<C>>>
Parameters:
n - such that 0 ≤ v ≤ (2n-1).
rnd - is a source for random bits.
Returns:
a random residue element.

parse

public Quotient<C> parse(java.lang.String s)
Parse Quotient from String. Syntax: "{ polynomial | polynomial }" or "{ polynomial }" or " polynomial | polynomial " or " polynomial "

Specified by:
parse in interface ElemFactory<Quotient<C extends GcdRingElem<C>>>
Parameters:
s - String.
Returns:
Quotient from s.

parse

public Quotient<C> parse(java.io.Reader r)
Parse Quotient from Reader.

Specified by:
parse in interface ElemFactory<Quotient<C extends GcdRingElem<C>>>
Parameters:
r - Reader.
Returns:
next Quotient from r.