Package cc.redberry.rings
Class ImageRing<F,I>
- java.lang.Object
-
- cc.redberry.rings.ImageRing<F,I>
-
- All Implemented Interfaces:
IParser<I>,Stringifiable<I>,Ring<I>,Serializable,Iterable<I>,Comparator<I>
- Direct Known Subclasses:
MultipleFieldExtension
public class ImageRing<F,I> extends Object implements Ring<I>
A ring obtained via isomorphism specified byimage(Object)andinverse(Object)functions.- See Also:
- Serialized Form
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Iabs(I el)Returns the abs value of element (no copy)Iadd(I... elements)Total of the array of elementsIadd(I a, I b)Add two elementsBigIntegercardinality()Returns the number of elements in this ring (cardinality) or null if ring is infiniteBigIntegercharacteristic()Returns characteristic of this ringintcompare(I o1, I o2)Icopy(I element)Makes a deep copy of the specified element (for immutable instances the same reference returned).Idecrement(I element)Returnselement - 1I[]divideAndRemainder(I dividend, I divider)Returns quotient and remainder ofdividend / dividerbooleanequals(Object o)I[]extendedGCD(I a, I b)Returns array of[gcd(a,b), s, t]such thats * a + t * b = gcd(a, b)FactorDecomposition<I>factor(I element)Factor specified elementIfactorial(long num)Gives a product ofvalueOf(1) * valueOf(2) * .... * valueOf(num)FactorDecomposition<I>factorSquareFree(I element)Square-free factorization of specified elementIgcd(I... elements)Returns greatest common divisor of specified elementsIgcd(I a, I b)Returns the greatest common divisor of two elementsIgcd(Iterable<I> elements)Returns greatest common divisor of specified elementsIgetOne()Returns unit element of this ring (one)IgetZero()Returns zero element of this ringinthashCode()Iimage(F el)I[]image(F[] el)Iincrement(I element)Returnselement + 1Finverse(I el)F[]inverse(I[] el)booleanisEuclideanRing()Returns whether this ring is a Euclidean ringbooleanisField()Returns whether this ring is a fieldbooleanisOne(I element)Tests whether specified element is one (exactly)booleanisPerfectPower()Returns whether the cardinality is a perfect power (p^k with k > 1)booleanisUnit(I element)Tests whether specified element is a ring unitbooleanisZero(I element)Tests whether specified element is zeroIterator<I>iterator()Returns iterator over ring elements (for finite rings, otherwise throws exception)Ilcm(I a, I b)Returns the least common multiple of two elementsImultiply(I... elements)Multiplies the array of elementsImultiply(I a, I b)Multiplies two elementsInegate(I element)Negates the given elementIparse(String string)Parse string into ring elementBigIntegerperfectPowerBase()Returnsbaseso thatcardinality == base^exponentor null if cardinality is not finiteBigIntegerperfectPowerExponent()Returnsexponentso thatcardinality == base^exponentor null if cardinality is not finiteIpow(I base, int exponent)Returnsbasein a power ofexponent(non negative)Ipow(I base, long exponent)Returnsbasein a power ofexponent(non negative)Ipow(I base, BigInteger exponent)Returnsbasein a power ofexponent(non negative)Iquotient(I dividend, I divider)Returns the quotient ofdividend / dividerIrandomElement(org.apache.commons.math3.random.RandomGenerator rnd)Returns a random element from this ringIreciprocal(I element)Gives the inverse elementelement ^ (-1)Iremainder(I dividend, I divider)Returns the remainder ofdividend / dividerintsignum(I element)Returns -1 ifelement < 0, 0 ifelement == 0and 1 ifelement > 0, where comparison is specified byComparator.compare(Object, Object)Isubtract(I a, I b)SubtractsbfromaIvalueOf(long val)Returns ring element associated with specifiedlongIvalueOf(I val)Converts a value from other ring to this ring.IvalueOfBigInteger(BigInteger val)Returns ring element associated with specified integer-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.util.Comparator
reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Methods inherited from interface cc.redberry.rings.Ring
addMutable, createArray, createArray, createArray, createArray, createArray2d, createArray2d, createZeroesArray, createZeroesArray2d, divideExact, divideExactMutable, divideOrNull, fillZeros, firstBezoutCoefficient, getNegativeOne, isFinite, isFiniteField, isMinusOne, isUnitOrZero, lcm, lcm, max, min, multiply, multiply, multiplyMutable, negateMutable, randomElement, randomElementTree, randomElementTree, randomNonZeroElement, setToValueOf, subtractMutable, valueOf
-
Methods inherited from interface cc.redberry.rings.io.Stringifiable
toString
-
-
-
-
Method Detail
-
isField
public boolean isField()
Description copied from interface:RingReturns whether this ring is a field
-
isEuclideanRing
public boolean isEuclideanRing()
Description copied from interface:RingReturns whether this ring is a Euclidean ring- Specified by:
isEuclideanRingin interfaceRing<F>- Returns:
- whether this ring is a Euclidean ring
-
cardinality
public BigInteger cardinality()
Description copied from interface:RingReturns the number of elements in this ring (cardinality) or null if ring is infinite- Specified by:
cardinalityin interfaceRing<F>- Returns:
- the number of elements in this ring (cardinality) or null if ring is infinite
-
characteristic
public BigInteger characteristic()
Description copied from interface:RingReturns characteristic of this ring- Specified by:
characteristicin interfaceRing<F>- Returns:
- characteristic of this ring
-
isPerfectPower
public boolean isPerfectPower()
Description copied from interface:RingReturns whether the cardinality is a perfect power (p^k with k > 1)- Specified by:
isPerfectPowerin interfaceRing<F>- Returns:
- whether the cardinality is a perfect power (p^k with k > 1)
-
perfectPowerBase
public BigInteger perfectPowerBase()
Description copied from interface:RingReturnsbaseso thatcardinality == base^exponentor null if cardinality is not finite- Specified by:
perfectPowerBasein interfaceRing<F>- Returns:
baseso thatcardinality == base^exponentor null if cardinality is not finite
-
perfectPowerExponent
public BigInteger perfectPowerExponent()
Description copied from interface:RingReturnsexponentso thatcardinality == base^exponentor null if cardinality is not finite- Specified by:
perfectPowerExponentin interfaceRing<F>- Returns:
exponentso thatcardinality == base^exponentor null if cardinality is not finite
-
multiply
public I multiply(I a, I b)
Description copied from interface:RingMultiplies two elements
-
negate
public I negate(I element)
Description copied from interface:RingNegates the given element
-
increment
public I increment(I element)
Description copied from interface:RingReturnselement + 1
-
decrement
public I decrement(I element)
Description copied from interface:RingReturnselement - 1
-
add
public I add(I... elements)
Description copied from interface:RingTotal of the array of elements
-
multiply
public I multiply(I... elements)
Description copied from interface:RingMultiplies the array of elements
-
abs
public I abs(I el)
Description copied from interface:RingReturns the abs value of element (no copy)
-
copy
public I copy(I element)
Description copied from interface:RingMakes a deep copy of the specified element (for immutable instances the same reference returned).
-
divideAndRemainder
public I[] divideAndRemainder(I dividend, I divider)
Description copied from interface:RingReturns quotient and remainder ofdividend / divider- Specified by:
divideAndRemainderin interfaceRing<F>- Parameters:
dividend- the dividenddivider- the divider- Returns:
{quotient, remainder}
-
quotient
public I quotient(I dividend, I divider)
Description copied from interface:RingReturns the quotient ofdividend / divider
-
remainder
public I remainder(I dividend, I divider)
Description copied from interface:RingReturns the remainder ofdividend / divider
-
reciprocal
public I reciprocal(I element)
Description copied from interface:RingGives the inverse elementelement ^ (-1)- Specified by:
reciprocalin interfaceRing<F>- Parameters:
element- the element- Returns:
element ^ (-1)
-
getZero
public I getZero()
Description copied from interface:RingReturns zero element of this ring
-
getOne
public I getOne()
Description copied from interface:RingReturns unit element of this ring (one)
-
isZero
public boolean isZero(I element)
Description copied from interface:RingTests whether specified element is zero
-
isOne
public boolean isOne(I element)
Description copied from interface:RingTests whether specified element is one (exactly)- Specified by:
isOnein interfaceRing<F>- Parameters:
element- the ring element- Returns:
- whether specified element is exactly one
- See Also:
Ring.isUnit(Object)
-
isUnit
public boolean isUnit(I element)
Description copied from interface:RingTests whether specified element is a ring unit- Specified by:
isUnitin interfaceRing<F>- Parameters:
element- the ring element- Returns:
- whether specified element is a ring unit
- See Also:
Ring.isOne(Object)
-
valueOf
public I valueOf(long val)
Description copied from interface:RingReturns ring element associated with specifiedlong
-
valueOfBigInteger
public I valueOfBigInteger(BigInteger val)
Description copied from interface:RingReturns ring element associated with specified integer- Specified by:
valueOfBigIntegerin interfaceRing<F>- Parameters:
val- integer- Returns:
- ring element associated with specified integer
-
valueOf
public I valueOf(I val)
Description copied from interface:RingConverts a value from other ring to this ring. The result is not guarantied to be a new instance (i.e.val == valueOf(val)is possible).
-
iterator
public Iterator<I> iterator()
Description copied from interface:RingReturns iterator over ring elements (for finite rings, otherwise throws exception)
-
gcd
public I gcd(I a, I b)
Description copied from interface:RingReturns the greatest common divisor of two elements
-
extendedGCD
public I[] extendedGCD(I a, I b)
Description copied from interface:RingReturns array of[gcd(a,b), s, t]such thats * a + t * b = gcd(a, b)- Specified by:
extendedGCDin interfaceRing<F>
-
lcm
public I lcm(I a, I b)
Description copied from interface:RingReturns the least common multiple of two elements
-
gcd
public I gcd(I... elements)
Description copied from interface:RingReturns greatest common divisor of specified elements
-
gcd
public I gcd(Iterable<I> elements)
Description copied from interface:RingReturns greatest common divisor of specified elements
-
signum
public int signum(I element)
Description copied from interface:RingReturns -1 ifelement < 0, 0 ifelement == 0and 1 ifelement > 0, where comparison is specified byComparator.compare(Object, Object)
-
factorSquareFree
public FactorDecomposition<I> factorSquareFree(I element)
Description copied from interface:RingSquare-free factorization of specified element- Specified by:
factorSquareFreein interfaceRing<F>
-
factor
public FactorDecomposition<I> factor(I element)
Description copied from interface:RingFactor specified element
-
parse
public I parse(String string)
Description copied from interface:RingParse string into ring element
-
pow
public I pow(I base, int exponent)
Description copied from interface:RingReturnsbasein a power ofexponent(non negative)
-
pow
public I pow(I base, long exponent)
Description copied from interface:RingReturnsbasein a power ofexponent(non negative)
-
pow
public I pow(I base, BigInteger exponent)
Description copied from interface:RingReturnsbasein a power ofexponent(non negative)
-
factorial
public I factorial(long num)
Description copied from interface:RingGives a product ofvalueOf(1) * valueOf(2) * .... * valueOf(num)
-
randomElement
public I randomElement(org.apache.commons.math3.random.RandomGenerator rnd)
Description copied from interface:RingReturns a random element from this ring- Specified by:
randomElementin interfaceRing<F>- Parameters:
rnd- the source of randomness- Returns:
- random element from this ring
-
compare
public int compare(I o1, I o2)
- Specified by:
comparein interfaceComparator<F>
-
equals
public boolean equals(Object o)
- Specified by:
equalsin interfaceComparator<F>- Overrides:
equalsin classObject
-
-