Class FactorDecomposition<E>

    • Field Detail

      • ring

        public final Ring<E> ring
        The ring
      • unit

        public E unit
        unit coefficient
      • factors

        public final List<E> factors
        factors
      • exponents

        public final gnu.trove.list.array.TIntArrayList exponents
        exponents
    • Constructor Detail

      • FactorDecomposition

        protected FactorDecomposition​(Ring<E> ring,
                                      E unit,
                                      List<E> factors,
                                      gnu.trove.list.array.TIntArrayList exponents)
    • 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
      • applyExponents

        public FactorDecomposition<E> applyExponents()
        Raise all factors to its corresponding exponents
      • applyConstantFactor

        public FactorDecomposition<E> applyConstantFactor()
        Raise all factors to its corresponding exponents
      • dropUnit

        public FactorDecomposition<E> dropUnit()
        Drops constant factor from this (new instance returned)
      • stream

        public Stream<E> stream()
        Stream of all factors
      • streamWithoutUnit

        public Stream<E> streamWithoutUnit()
        Stream of all factors except unit
      • 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
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • 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 ring
        unit - the unit coefficient
        factors - the factors
        exponents - the exponents
      • of

        public static <E> FactorDecomposition<E> of​(Ring<E> ring,
                                                    E... factors)
        Factor decomposition with specified factors and exponents
        Parameters:
        ring - the ring
        factors - factors
      • of

        public static <E> FactorDecomposition<E> of​(Ring<E> ring,
                                                    Collection<E> factors)
        Factor decomposition with specified factors and exponents
        Parameters:
        ring - the ring
        factors - factors