Interface Poly

All Superinterfaces:
Iterable<Poly.Term>
All Known Implementing Classes:
AbstractPoly, DensePoly, SparsePoly

public interface Poly extends Iterable<Poly.Term>
Polys are immutable polynomials with integer coefficients.

A typical Poly is \( p = c_0 + c_1 x + c_2 x^2 + \cdots + c_n x^n \) where \( c_i \in \mathbf N\).

A Poly is Iterable, the iterator returns its (non-zero) Poly.Term in increasing degree order.

  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Interface
    Description
    static final record 
    A non-zero term of a polynomial.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final Poly
    The only instance of the zero Poly.
  • Method Summary

    Modifier and Type
    Method
    Description
    add(Poly q)
    Performs polynomial addition.
    default int
    coefficient(int degree)
    Returns the coefficient of the term of given exponent.
    int
    Returns the degree of this polynomial.
    boolean
    Checks whether this polynomial is the zero polynomial.
    Returns the negated polynomial.
    mul(Poly q)
    Performs polynomial multiplication.
    default Poly
    sub(Poly q)
    Performs polynomial subtraction.
    static Poly.Term
    term(int c, int d)
    Creates a term with given coefficient and degree.

    Methods inherited from interface Iterable

    forEach, iterator, spliterator
  • Field Details

    • ZERO

      static final Poly ZERO
      The only instance of the zero Poly.
  • Method Details

    • term

      static Poly.Term term(int c, int d)
      Creates a term with given coefficient and degree.
      Parameters:
      c - the coefficient.
      d - the degree.
      Returns:
      the term \( cx^d \).
      Throws:
      IllegalArgumentException - if the degree is negative or the coefficient is zero.
    • isZero

      boolean isZero()
      Checks whether this polynomial is the zero polynomial.
      Returns:
      true if this polynomial is the zero polynomial, false otherwise.
    • degree

      int degree()
      Returns the degree of this polynomial.
      Returns:
      the largest exponent with a non-zero coefficient.
      Throws:
      IllegalStateException - if this is the zero polynomial.
    • coefficient

      default int coefficient(int degree)
      Returns the coefficient of the term of given exponent.
      Parameters:
      degree - the exponent of the term to consider.
      Returns:
      the coefficient of the considered term.
    • minus

      Poly minus()
      Returns the negated polynomial.

      If \( p \) is this polynomial, returns \( -p \).

      Returns:
      this polynomial multiplied by \( -1 \).
    • add

      Poly add(Poly q)
      Performs polynomial addition.

      If \( p \) is this polynomial, returns \( p + q \).

      Parameters:
      q - the polynomial to add to this one.
      Returns:
      the sum among this and the given polynomial.
      Throws:
      NullPointerException - if q is null.
    • sub

      default Poly sub(Poly q)
      Performs polynomial subtraction.

      If \( p \) is this polynomial, returns \( p - q \).

      Parameters:
      q - the polynomial to subtract from this one.
      Returns:
      the subtraction among this and the given polynomial.
      Throws:
      NullPointerException - if q is null.
    • mul

      Poly mul(Poly q)
      Performs polynomial multiplication.

      If \( p \) is this polynomial, returns \( p q \).

      Parameters:
      q - the polynomial to multiply by this one.
      Returns:
      the product among this and the given polynomial.
      Throws:
      NullPointerException - if q is null.