Polynomial

trait Polynomial[@specialized(Double) C]
Companion
object
class Object
trait Matchable
class Any
class PolyDense[C]
class PolySparse[C]

Value members

Abstract methods

def *(rhs: Polynomial[C])(implicit ring: Semiring[C], eq: Eq[C]): Polynomial[C]
def *:(k: C)(implicit ring: Semiring[C], eq: Eq[C]): Polynomial[C]
def +(rhs: Polynomial[C])(implicit ring: Semiring[C], eq: Eq[C]): Polynomial[C]
def apply(x: C)(implicit r: Semiring[C]): C

Evaluate the polynomial at x.

Evaluate the polynomial at x.

def coeffsArray(implicit ring: Semiring[C]): Array[C]

Returns the coefficients in little-endian order. So, the i-th element is coeffsArray(i) * (x ** i).

Returns the coefficients in little-endian order. So, the i-th element is coeffsArray(i) * (x ** i).

def degree: Int

Returns the degree of this polynomial.

Returns the degree of this polynomial.

def derivative(implicit ring: Ring[C], eq: Eq[C]): Polynomial[C]
def foreach[U](f: (Int, C) => U): Unit

Traverses each term in this polynomial, in order of degree, lowest to highest (eg. constant term would be first) and calls f with the degree of term and its coefficient. This may skip zero terms, or it may not.

Traverses each term in this polynomial, in order of degree, lowest to highest (eg. constant term would be first) and calls f with the degree of term and its coefficient. This may skip zero terms, or it may not.

def integral(implicit field: Field[C], eq: Eq[C]): Polynomial[C]
def isZero: Boolean

Returns true if this polynomial is ring.zero.

Returns true if this polynomial is ring.zero.

def maxOrderTermCoeff(implicit ring: Semiring[C]): C

Returns the coefficient of max term of this polynomial.

Returns the coefficient of max term of this polynomial.

def nth(n: Int)(implicit ring: Semiring[C]): C

Returns the coefficient of the n-th degree term.

Returns the coefficient of the n-th degree term.

def reductum(implicit e: Eq[C], ring: Semiring[C], ct: ClassTag[C]): Polynomial[C]

Returns a polynomial with the max term removed.

Returns a polynomial with the max term removed.

def termsIterator: Iterator[Term[C]]

Return an iterator of non-zero terms.

Return an iterator of non-zero terms.

This method is used to implement equals and hashCode.

NOTE: This method uses a (_ == 0) test to prune zero values. This makes sense in a context where Semiring[C] and Eq[C] are unavailable, but not other places.

def toDense(implicit ring: Semiring[C], eq: Eq[C]): PolyDense[C]

Returns a polynmial that has a dense representation.

Returns a polynmial that has a dense representation.

def toSparse(implicit ring: Semiring[C], eq: Eq[C]): PolySparse[C]

Returns a polynomial that has a sparse representation.

Returns a polynomial that has a sparse representation.

def unary_-(implicit ring: Rng[C]): Polynomial[C]

Concrete methods

def **(k: Int)(implicit ring: Rig[C], eq: Eq[C]): Polynomial[C]
def -(rhs: Polynomial[C])(implicit ring: Rng[C], eq: Eq[C]): Polynomial[C]
def :*(k: C)(implicit ring: Semiring[C], eq: Eq[C]): Polynomial[C]
def :/(k: C)(implicit field: Field[C], eq: Eq[C]): Polynomial[C]
def compose(y: Polynomial[C])(implicit ring: Rig[C], eq: Eq[C]): Polynomial[C]

Compose this polynomial with another.

Compose this polynomial with another.

def data(implicit ring: Semiring[C], eq: Eq[C]): Map[Int, C]

Returns a map from exponent to coefficient of this polynomial.

Returns a map from exponent to coefficient of this polynomial.

override
def equals(that: Any): Boolean
Definition Classes
Any
def evalWith[A : ClassTag](x: A)(f: C => A): A
def flip(implicit ring: Rng[C], eq: Eq[C]): Polynomial[C]

This will flip/mirror the polynomial about the y-axis. It is equivalent to poly.compose(-Polynomial.x), but will likely be faster to calculate.

This will flip/mirror the polynomial about the y-axis. It is equivalent to poly.compose(-Polynomial.x), but will likely be faster to calculate.

def foreachNonZero[U](f: (Int, C) => U)(implicit ring: Semiring[C], eq: Eq[C]): Unit

Traverses each non-zero term in this polynomial, in order of degree, lowest to highest (eg. constant term would be first) and calls f with the degree of term and its coefficient.

Traverses each non-zero term in this polynomial, in order of degree, lowest to highest (eg. constant term would be first) and calls f with the degree of term and its coefficient.

override
def hashCode: Int
Definition Classes
Any
def isConstant: Boolean

Returns true iff this polynomial is constant.

Returns true iff this polynomial is constant.

def map[D : ClassTag](f: C => D): Polynomial[D]
def mapTerms[D : ClassTag](f: Term[C] => Term[D]): Polynomial[D]
def maxTerm(implicit ring: Semiring[C]): Term[C]

Returns the term of the highest degree in this polynomial.

Returns the term of the highest degree in this polynomial.

@nowarn
def minTerm(implicit ring: Semiring[C], eq: Eq[C]): Term[C]

Returns the non-zero term of the minimum degree in this polynomial, unless it is zero. If this polynomial is zero, then this returns a zero term.

Returns the non-zero term of the minimum degree in this polynomial, unless it is zero. If this polynomial is zero, then this returns a zero term.

def monic(implicit f: Field[C], eq: Eq[C]): Polynomial[C]

Returns this polynomial as a monic polynomial, where the leading coefficient (ie. maxOrderTermCoeff) is 1.

Returns this polynomial as a monic polynomial, where the leading coefficient (ie. maxOrderTermCoeff) is 1.

def pow(k: Int)(implicit ring: Rig[C], eq: Eq[C]): Polynomial[C]
def reciprocal(implicit ring: Semiring[C], eq: Eq[C]): Polynomial[C]

Returns the reciprocal of this polynomial. Essentially, if this polynomial is p with degree n, then returns a polynomial q(x) = x^n*p(1/x).

Returns the reciprocal of this polynomial. Essentially, if this polynomial is p with degree n, then returns a polynomial q(x) = x^n*p(1/x).

See also
def removeZeroRoots(implicit ring: Semiring[C], eq: Eq[C]): Polynomial[C]

Removes all zero roots from this polynomial.

Removes all zero roots from this polynomial.

def roots(implicit finder: RootFinder[C]): Roots[C]

Returns the real roots of this polynomial.

Returns the real roots of this polynomial.

Depending on C, the finder argument may need to be passed "explicitly" via an implicit conversion. This is because some types (eg BigDecimal, Rational, etc) require an error bound, and so provide implicit conversions to RootFinders from the error type. For instance, BigDecimal requires either a scale or MathContext. So, we'd call this method with poly.roots(MathContext.DECIMAL128), which would return a Roots[BigDecimal whose roots are approximated to the precision specified in DECIMAL128 and rounded appropriately.

On the other hand, a type like Double doesn't require an error bound and so can be called without specifying the RootFinder.

Value Params
finder

a root finder to extract roots with

Returns

the real roots of this polynomial

def shift(h: C)(implicit ring: Ring[C], eq: Eq[C]): Polynomial[C]

Shift this polynomial along the x-axis by h, so that this(x + h) == this.shift(h).apply(x). This is equivalent to calling this.compose(Polynomial.x + h), but is likely to compute the shifted polynomial much faster.

Shift this polynomial along the x-axis by h, so that this(x + h) == this.shift(h).apply(x). This is equivalent to calling this.compose(Polynomial.x + h), but is likely to compute the shifted polynomial much faster.

def signVariations(implicit ring: Semiring[C], signed: Signed[C]): Int

Returns the number of sign variations in the coefficients of this polynomial. Given 2 consecutive terms (ignoring 0 terms), a sign variation is indicated when the terms have differing signs.

Returns the number of sign variations in the coefficients of this polynomial. Given 2 consecutive terms (ignoring 0 terms), a sign variation is indicated when the terms have differing signs.

def terms(implicit ring: Semiring[C], eq: Eq[C]): List[Term[C]]

Returns a list of non-zero terms.

Returns a list of non-zero terms.

override
def toString: String
Definition Classes
Any

Implicits

Implicits

implicit
def ct: ClassTag[C]