Package cc.redberry.rings
Class FactorDecomposition<E>
- java.lang.Object
-
- cc.redberry.rings.FactorDecomposition<E>
-
- All Implemented Interfaces:
Stringifiable<E>,Serializable,Iterable<E>
- Direct Known Subclasses:
PolynomialFactorDecomposition
public class FactorDecomposition<E> extends Object implements Iterable<E>, Stringifiable<E>, Serializable
Factor decomposition of element. Unit coefficient of decomposition is stored inunit, factors returned byget(int)are non-units. This class is mutable.Iterable specification provides iterator over non-unit factors only; to iterate over all factors including the constant factor use
iterableWithUnit()- Since:
- 2.2
- Author:
- Stanislav Poslavsky
- See Also:
- Serialized Form
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description FactorDecomposition<E>addAll(FactorDecomposition<E> other)add all factors from otherFactorDecomposition<E>addFactor(E factor, int exponent)add another factorFactorDecomposition<E>addUnit(E unit)add another unit factorFactorDecomposition<E>addUnit(E unit, int exponent)add another unit factorFactorDecomposition<E>apply(Function<E,E> mapper)FactorDecomposition<E>applyConstantFactor()Raise all factors to its corresponding exponentsFactorDecomposition<E>applyExponents()Raise all factors to its corresponding exponentsFactorDecomposition<E>canonical()Sort factors.FactorDecomposition<E>clone()FactorDecomposition<E>dropExponents()Set all exponents to oneFactorDecomposition<E>dropFactor(int i)Remove specified factorFactorDecomposition<E>dropUnit()Drops constant factor from this (new instance returned)static <E> FactorDecomposition<E>empty(Ring<E> ring)Empty factorizationbooleanequals(Object o)Eget(int i)Returns i-th factorintgetExponent(int i)Exponent of i-th factorinthashCode()booleanisTrivial()Whether this is a trivial factorization (contains only one factor)booleanisUnit(E element)Iterable<E>iterableWithUnit()Iterator over all factors including a unit oneIterator<E>iterator()<R> FactorDecomposition<R>mapTo(Ring<R> othRing, Function<E,R> mapper)Emultiply()Multiply factorsEmultiplyIgnoreExponents()Multiply with no account for exponentsstatic <E> FactorDecomposition<E>of(Ring<E> ring, E... factors)Factor decomposition with specified factors and exponentsstatic <E> FactorDecomposition<E>of(Ring<E> ring, E unit, List<E> factors, gnu.trove.list.array.TIntArrayList exponents)Factor decomposition with specified factors and exponentsstatic <E> FactorDecomposition<E>of(Ring<E> ring, Collection<E> factors)Factor decomposition with specified factors and exponentsvoidraiseExponents(long val)Multiply each exponent by a given factorFactorDecomposition<E>setUnit(E unit)Sets the unit factorintsize()Number of non-constant factorsEsquareFreePart()Square-free partStream<E>stream()Stream of all factorsStream<E>streamWithoutUnit()Stream of all factors exceptunitintsumExponents()Sum all exponentsE[]toArrayWithoutUnit()Array of factors without constant factorE[]toArrayWithUnit()Array of factors without constant factorStringtoString()StringtoString(IStringifier<E> stringifier)convert this to string with the use of stringifierstatic <E> FactorDecomposition<E>unit(Ring<E> ring, E unit)Unit factorization-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Method Detail
-
iterableWithUnit
public Iterable<E> iterableWithUnit()
Iterator over all factors including a unit one- Returns:
- iterator over all factors including a unit one
-
isUnit
public boolean isUnit(E element)
-
get
public E get(int i)
Returns i-th factor
-
getExponent
public int getExponent(int i)
Exponent of i-th factor
-
size
public int size()
Number of non-constant factors
-
isTrivial
public boolean isTrivial()
Whether this is a trivial factorization (contains only one factor)
-
sumExponents
public int sumExponents()
Sum all exponents
-
raiseExponents
public void raiseExponents(long val)
Multiply each exponent by a given factor
-
setUnit
public FactorDecomposition<E> setUnit(E unit)
Sets the unit factor
-
addUnit
public FactorDecomposition<E> addUnit(E unit)
add another unit factor
-
addUnit
public FactorDecomposition<E> addUnit(E unit, int exponent)
add another unit factor
-
addFactor
public FactorDecomposition<E> addFactor(E factor, int exponent)
add another factor
-
addAll
public FactorDecomposition<E> addAll(FactorDecomposition<E> other)
add all factors from other
-
applyExponents
public FactorDecomposition<E> applyExponents()
Raise all factors to its corresponding exponents
-
applyConstantFactor
public FactorDecomposition<E> applyConstantFactor()
Raise all factors to its corresponding exponents
-
dropExponents
public FactorDecomposition<E> dropExponents()
Set all exponents to one
-
dropUnit
public FactorDecomposition<E> dropUnit()
Drops constant factor from this (new instance returned)
-
dropFactor
public FactorDecomposition<E> dropFactor(int i)
Remove specified factor
-
toArrayWithoutUnit
public E[] toArrayWithoutUnit()
Array of factors without constant factor
-
toArrayWithUnit
public E[] toArrayWithUnit()
Array of factors without constant factor
-
multiply
public E multiply()
Multiply factors
-
multiplyIgnoreExponents
public E multiplyIgnoreExponents()
Multiply with no account for exponents
-
squareFreePart
public E squareFreePart()
Square-free part
-
canonical
public FactorDecomposition<E> canonical()
Sort factors.
-
mapTo
public <R> FactorDecomposition<R> mapTo(Ring<R> othRing, Function<E,R> mapper)
-
apply
public FactorDecomposition<E> apply(Function<E,E> mapper)
-
toString
public String toString(IStringifier<E> stringifier)
Description copied from interface:Stringifiableconvert this to string with the use of stringifier- Specified by:
toStringin interfaceStringifiable<E>
-
clone
public FactorDecomposition<E> clone()
-
unit
public static <E> FactorDecomposition<E> unit(Ring<E> ring, E unit)
Unit factorization
-
empty
public static <E> FactorDecomposition<E> empty(Ring<E> ring)
Empty factorization
-
of
public static <E> FactorDecomposition<E> of(Ring<E> ring, E unit, List<E> factors, gnu.trove.list.array.TIntArrayList exponents)
Factor decomposition with specified factors and exponents- Parameters:
ring- the ringunit- the unit coefficientfactors- the factorsexponents- the exponents
-
of
public static <E> FactorDecomposition<E> of(Ring<E> ring, E... factors)
Factor decomposition with specified factors and exponents- Parameters:
ring- the ringfactors- factors
-
of
public static <E> FactorDecomposition<E> of(Ring<E> ring, Collection<E> factors)
Factor decomposition with specified factors and exponents- Parameters:
ring- the ringfactors- factors
-
-