Class SparsePoly
java.lang.Object
it.unimi.di.prog2.h09.SparsePoly
SparsePolys are immutable polynomials with integer coefficients such that the number of
nonzero coefficient is small with respect to the degree.
A typical Poly is \( p = c_0 + c_1 x + c_2 x^2 + \cdots + c_n x^n \).
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final recordA record holding a non-zero term of the polynomial. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final List<SparsePoly.Term> The array of terms (in increasing degree). -
Constructor Summary
ConstructorsModifierConstructorDescriptionInitializes this to be the zero polynomial, that is \( p = 0 \).SparsePoly(int c, int n) Initializes this to be the polynomial \(p = cx^n\).privateSparsePoly(List<SparsePoly.Term> lst) Initializes this to be the polynomial from a list of terms in increasing degree order. -
Method Summary
Modifier and TypeMethodDescriptionadd(SparsePoly q) Performs polynomial addition.private static voidaddTerm(List<SparsePoly.Term> lst, SparsePoly.Term term) Adds a term to a list of terms in increasing degree order.intcoeff(int d) Returns the coefficient of the term of given exponent.intdegree()Returns the degree of this polynomial.private static intfindByDegree(List<SparsePoly.Term> lst, int d) Finds the index of a term of given degree in a list of terms in increasing degree order.minus()Returns the negate polynomial.mul(SparsePoly q) Performs polynomial multiplication.sub(SparsePoly q) Performs polynomial subtraction.
-
Field Details
-
terms
The array of terms (in increasing degree).
-
-
Constructor Details
-
SparsePoly
public SparsePoly()Initializes this to be the zero polynomial, that is \( p = 0 \). -
SparsePoly
Initializes this to be the polynomial \(p = cx^n\).- Parameters:
c- the coefficient.n- the degree.- Throws:
IllegalArgumentException- ifn< 0.
-
SparsePoly
Initializes this to be the polynomial from a list of terms in increasing degree order.- Parameters:
lst- the notnulllist, not containingnulls and in increasing degree order.
-
-
Method Details
-
findByDegree
Finds the index of a term of given degree in a list of terms in increasing degree order.- Parameters:
lst- the notnulllist of notnullterms and in increasing degree order.d- the degree.- Returns:
- the index of a term of given degree, or -1 if none is present.
-
coeff
public int coeff(int d) Returns the coefficient of the term of given exponent.- Parameters:
d- the exponent of the term to consider.- Returns:
- the coefficient of the considered term.
-
degree
public int degree()Returns the degree of this polynomial.- Returns:
- the largest exponent with a non-zero coefficient; returns 0 if this is the zero
Poly.
-
addTerm
Adds a term to a list of terms in increasing degree order.The list will remain in increasing degree order, in case a term with the same degree was present, the two will be added (and removed if the coefficient will become 0).
- Parameters:
lst- the notnulllist of notnullterms in increasing degree order.term- the notnullterm.
-
add
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- ifqisnull.
-
mul
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- ifqisnull.
-
sub
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- ifqisnull.
-
minus
Returns the negate polynomial.If \( p \) is this polynomial, returns \( -p \).
- Returns:
- this polynomial multiplied by \( -1 \).
-