Package edu.jas.ufd
Class QuotientRing<C extends GcdRingElem<C>>
- java.lang.Object
-
- edu.jas.ufd.QuotientRing<C>
-
- All Implemented Interfaces:
AbelianGroupFactory<Quotient<C>>
,ElemFactory<Quotient<C>>
,MonoidFactory<Quotient<C>>
,QuotPairFactory<GenPolynomial<C>,Quotient<C>>
,RingFactory<Quotient<C>>
,java.io.Serializable
public class QuotientRing<C extends GcdRingElem<C>> extends java.lang.Object implements RingFactory<Quotient<C>>, QuotPairFactory<GenPolynomial<C>,Quotient<C>>
Quotient ring factory based on GenPolynomial with RingElem interface. Objects of this class are immutable.- Author:
- Heinz Kredel
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
QuotientRing.QuoNorm
Quotient polynomial normalization, simplification.
-
Field Summary
Fields Modifier and Type Field Description GreatestCommonDivisor<C>
engine
GCD engine of the factory.static QuotientRing.QuoNorm
quoNorm
Default quotient polynomial normalization, simplification.GenPolynomialRing<C>
ring
Polynomial ring of the factory.boolean
ufdGCD
Use GCD of package edu.jas.ufd.
-
Constructor Summary
Constructors Constructor Description QuotientRing(GenPolynomialRing<C> r)
The constructor creates a QuotientRing object from a GenPolynomialRing.QuotientRing(GenPolynomialRing<C> r, boolean ufdGCD)
The constructor creates a QuotientRing object from a GenPolynomialRing.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.math.BigInteger
characteristic()
Characteristic of this ring.Quotient<C>
copy(Quotient<C> c)
Copy Quotient element c.Quotient<C>
create(GenPolynomial<C> n)
Create from numerator.Quotient<C>
create(GenPolynomial<C> n, GenPolynomial<C> d)
Create from numerator, denominator pair.protected GenPolynomial<C>
divide(GenPolynomial<C> n, GenPolynomial<C> d)
Divide.boolean
equals(java.lang.Object b)
Comparison with any other object.long
extensionDegree()
Degree of extension field.Quotient<C>
fromInteger(long a)
Get a Quotient element from a long value.Quotient<C>
fromInteger(java.math.BigInteger a)
Get a Quotient element from a BigInteger value.protected GenPolynomial<C>
gcd(GenPolynomial<C> n, GenPolynomial<C> d)
Greatest common divisor.java.util.List<Quotient<C>>
generators()
Get a list of the generating elements.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.boolean
isFinite()
Is this structure finite or infinite.GenPolynomialRing<C>
pairFactory()
Factory for base elements.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 quotient polynomial.Quotient<C>
random(int n, java.util.Random rnd)
Quotient random.java.lang.String
toScript()
Get a scripting compatible string representation.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
-
Methods inherited from interface edu.jas.structure.ElemFactory
valueOf
-
-
-
-
Field Detail
-
quoNorm
public static final QuotientRing.QuoNorm quoNorm
Default quotient polynomial normalization, simplification.
-
ring
public final GenPolynomialRing<C extends GcdRingElem<C>> ring
Polynomial ring of the factory.
-
engine
public final GreatestCommonDivisor<C extends GcdRingElem<C>> 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.- Parameters:
r
- polynomial ring.
-
QuotientRing
public QuotientRing(GenPolynomialRing<C> r, boolean ufdGCD)
The constructor creates a QuotientRing object from a GenPolynomialRing.- Parameters:
r
- polynomial ring.ufdGCD
- flag, if syzygy or gcd based algorithm used for engine.
-
-
Method Detail
-
pairFactory
public GenPolynomialRing<C> pairFactory()
Factory for base elements.- Specified by:
pairFactory
in interfaceQuotPairFactory<GenPolynomial<C extends GcdRingElem<C>>,Quotient<C extends GcdRingElem<C>>>
-
create
public Quotient<C> create(GenPolynomial<C> n)
Create from numerator.- Specified by:
create
in interfaceQuotPairFactory<GenPolynomial<C extends GcdRingElem<C>>,Quotient<C extends GcdRingElem<C>>>
-
create
public Quotient<C> create(GenPolynomial<C> n, GenPolynomial<C> d)
Create from numerator, denominator pair.- Specified by:
create
in interfaceQuotPairFactory<GenPolynomial<C extends GcdRingElem<C>>,Quotient<C extends GcdRingElem<C>>>
-
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)
-
isFinite
public boolean isFinite()
Is this structure finite or infinite.- Specified by:
isFinite
in interfaceElemFactory<C extends GcdRingElem<C>>
- Returns:
- true if this structure is finite, else false.
- See Also:
ElemFactory.isFinite()
-
copy
public Quotient<C> copy(Quotient<C> c)
Copy Quotient element c.- Specified by:
copy
in interfaceElemFactory<C extends GcdRingElem<C>>
- Parameters:
c
-- Returns:
- a copy of c.
-
getZERO
public Quotient<C> getZERO()
Get the zero element.- Specified by:
getZERO
in interfaceAbelianGroupFactory<C extends GcdRingElem<C>>
- Returns:
- 0 as Quotient.
-
getONE
public Quotient<C> getONE()
Get the one element.- Specified by:
getONE
in interfaceMonoidFactory<C extends GcdRingElem<C>>
- Returns:
- 1 as Quotient.
-
generators
public java.util.List<Quotient<C>> generators()
Get a list of the generating elements.- Specified by:
generators
in interfaceElemFactory<C extends GcdRingElem<C>>
- Returns:
- list of generators for the algebraic structure.
- See Also:
ElemFactory.generators()
-
isCommutative
public boolean isCommutative()
Query if this ring is commutative.- Specified by:
isCommutative
in interfaceMonoidFactory<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 interfaceMonoidFactory<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 interfaceRingFactory<C extends GcdRingElem<C>>
- Returns:
- true.
-
characteristic
public java.math.BigInteger characteristic()
Characteristic of this ring.- Specified by:
characteristic
in interfaceRingFactory<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 interfaceElemFactory<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 interfaceElemFactory<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 classjava.lang.Object
- See Also:
Object.toString()
-
toScript
public java.lang.String toScript()
Get a scripting compatible string representation.- Specified by:
toScript
in interfaceElemFactory<C extends GcdRingElem<C>>
- Returns:
- script compatible representation for this ElemFactory.
- See Also:
ElemFactory.toScript()
-
equals
public boolean equals(java.lang.Object b)
Comparison with any other object.- Overrides:
equals
in classjava.lang.Object
- See Also:
Object.equals(java.lang.Object)
-
hashCode
public int hashCode()
Hash code for this quotient ring.- Overrides:
hashCode
in classjava.lang.Object
- See Also:
Object.hashCode()
-
random
public Quotient<C> random(int n)
Quotient random.- Specified by:
random
in interfaceElemFactory<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 quotient 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 quotient polynomial.
-
random
public Quotient<C> random(int n, java.util.Random rnd)
Quotient random.- Specified by:
random
in interfaceElemFactory<C extends GcdRingElem<C>>
- Parameters:
n
- such that 0 ≤ v ≤ (2n-1).rnd
- is a source for random bits.- Returns:
- a random quotient 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 interfaceElemFactory<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 interfaceElemFactory<C extends GcdRingElem<C>>
- Parameters:
r
- Reader.- Returns:
- next Quotient from r.
-
extensionDegree
public long extensionDegree()
Degree of extension field.- Returns:
- degree of this extension field, -1 for transcendental extension.
-
-