[−][src]Trait rustnomial::SizedPolynomial
Required methods
pub fn len(&self) -> usize
[src]
pub fn term_with_degree(&self, degree: usize) -> Term<N>
[src]
Returns the term with the given degree from SizedPolynomial
.
If the term degree is larger than the actual degree, ZeroTerm will be returned.
However, terms which are zero will also be returned as ZeroTerm.
pub fn degree(&self) -> Degree
[src]
Returns the degree of SizedPolynomial
.
pub fn zero() -> Self where
Self: Sized,
[src]
Self: Sized,
Returns the zero-instance of SizedPolynomial
.
pub fn set_to_zero(&mut self)
[src]
Sets the terms of SizedPolynomial
to zero.
Provided methods
pub fn term_iter(&self) -> TermIterator<'_, N> where
Self: Sized,
[src]
Self: Sized,
Returns an iterator for the Polynomial
, yielding the coefficient and degree of each
non-zero term, in descending degree order.
Example
use rustnomial::{Polynomial, SizedPolynomial}; let polynomial = Polynomial::new(vec![1, 0, 2, 3]); let mut iter = polynomial.term_iter(); assert_eq!(Some((1, 3)), iter.next()); assert_eq!(Some((2, 1)), iter.next()); assert_eq!(Some((3, 0)), iter.next()); assert_eq!(None, iter.next());
pub fn is_zero(&self) -> bool
[src]
Returns true if all terms are zero, and false if a non-zero term exists.
Example
use rustnomial::{SizedPolynomial, Polynomial}; let zero = Polynomial::new(vec![0, 0]); assert!(zero.is_zero()); let non_zero = Polynomial::new(vec![0, 1]); assert!(!non_zero.is_zero());
Implementors
impl<N: Copy + Zero> SizedPolynomial<N> for LinearBinomial<N>
[src]
pub fn len(&self) -> usize
[src]
Return the length of LinearBinomial
. Not equal to the number of terms.
Example
use rustnomial::{LinearBinomial, SizedPolynomial}; let binomial = LinearBinomial::new([3.0, 2.0]); assert_eq!(2, binomial.len()); assert_eq!(0, LinearBinomial::<i32>::zero().len());
pub fn term_with_degree(&self, degree: usize) -> Term<N>
[src]
Returns the term with the given degree
of the LinearBinomial
.
Example
use rustnomial::{LinearBinomial, SizedPolynomial, Term}; let binomial = LinearBinomial::new([5, 0]); assert_eq!(Term::Term(5, 1), binomial.term_with_degree(1)); assert_eq!(Term::ZeroTerm, binomial.term_with_degree(0));
pub fn degree(&self) -> Degree
[src]
Returns the degree of the LinearBinomial
.
Example
use rustnomial::{SizedPolynomial, LinearBinomial, Degree}; let binomial = LinearBinomial::new([3.0, 2.0]); assert_eq!(Degree::Num(1), binomial.degree()); let monomial = LinearBinomial::new([0.0, 1.0]); assert_eq!(Degree::Num(0), monomial.degree()); let zero = LinearBinomial::<i32>::zero(); assert_eq!(Degree::NegInf, zero.degree());
pub fn zero() -> Self
[src]
Returns a LinearBinomial
with no terms.
Example
use rustnomial::{SizedPolynomial, LinearBinomial}; let zero = LinearBinomial::<i32>::zero(); assert!(zero.is_zero()); assert!(zero.term_iter().next().is_none());
pub fn set_to_zero(&mut self)
[src]
Sets self to zero.
Example
use rustnomial::{SizedPolynomial, LinearBinomial}; let mut non_zero = LinearBinomial::new([1, 1]); assert!(!non_zero.is_zero()); non_zero.set_to_zero(); assert!(non_zero.is_zero());
impl<N: Copy + Zero> SizedPolynomial<N> for Monomial<N>
[src]
pub fn len(&self) -> usize
[src]
Return the number of terms in Monomial
.
Example
use rustnomial::{Monomial, SizedPolynomial}; let monomial = Monomial::new(3.0, 2); assert_eq!(1, monomial.len()); assert_eq!(0, Monomial::<i32>::zero().len());
pub fn term_with_degree(&self, degree: usize) -> Term<N>
[src]
Returns the term with the given degree
of the Monomial
.
Example
use rustnomial::{Monomial, SizedPolynomial, Term}; let monomial = Monomial::new(5, 2); assert_eq!(Term::Term(5, 2), monomial.term_with_degree(2)); assert_eq!(Term::ZeroTerm, monomial.term_with_degree(1));
pub fn degree(&self) -> Degree
[src]
Returns the degree of the Monomial
.
Example
use rustnomial::{SizedPolynomial, Monomial, Degree}; let monomial = Monomial::new(3.0, 2); assert_eq!(Degree::Num(2), monomial.degree()); let zero_with_nonzero_deg = Monomial::new(0.0, 2); assert_eq!(Degree::NegInf, zero_with_nonzero_deg.degree()); let nonzero_with_zero_degree = Monomial::new(1.0, 0); assert_eq!(Degree::Num(0), nonzero_with_zero_degree.degree());
pub fn zero() -> Self
[src]
Return a Monomial
which is equal to zero.
Example
use rustnomial::{SizedPolynomial, Monomial}; assert!(Monomial::<i32>::zero().is_zero());
pub fn set_to_zero(&mut self)
[src]
Sets self to zero.
Example
use rustnomial::{SizedPolynomial, Monomial}; let mut non_zero = Monomial::new(1, 1); assert!(!non_zero.is_zero()); non_zero.set_to_zero(); assert!(non_zero.is_zero());
impl<N: Copy + Zero> SizedPolynomial<N> for Polynomial<N>
[src]
pub fn len(&self) -> usize
[src]
Returns the length of the Polynomial
. Not equal to the number of terms.
pub fn term_with_degree(&self, degree: usize) -> Term<N>
[src]
pub fn degree(&self) -> Degree
[src]
Returns the degree of the Polynomial
it is called on, corresponding to the
largest non-zero term.
Example
use rustnomial::{SizedPolynomial, Polynomial, Degree}; let polynomial = Polynomial::new(vec![1.0, 4.0, 4.0]); assert_eq!(Degree::Num(2), polynomial.degree());
pub fn zero() -> Polynomial<N>
[src]
Returns a Polynomial
with no terms.
Example
use rustnomial::{SizedPolynomial, Polynomial}; let zero = Polynomial::<i32>::zero(); assert!(zero.is_zero()); assert!(zero.term_iter().next().is_none()); assert!(zero.terms.is_empty());
pub fn set_to_zero(&mut self)
[src]
Sets self to zero.
Example
use rustnomial::{Polynomial, SizedPolynomial}; let mut non_zero = Polynomial::from(vec![0, 1]); assert!(!non_zero.is_zero()); non_zero.set_to_zero(); assert!(non_zero.is_zero());
impl<N: Copy + Zero> SizedPolynomial<N> for QuadraticTrinomial<N>
[src]
pub fn len(&self) -> usize
[src]
Return the number of terms in QuadraticTrinomial
.
Example
use rustnomial::{QuadraticTrinomial, SizedPolynomial}; let trinomial = QuadraticTrinomial::new([1, 2, 3]); assert_eq!(3, trinomial.len()); assert_eq!(0, QuadraticTrinomial::<i32>::zero().len());
pub fn term_with_degree(&self, degree: usize) -> Term<N>
[src]
Returns the term with the given degree
of the QuadraticTrinomial
.
Example
use rustnomial::{QuadraticTrinomial, SizedPolynomial, Term}; let trinomial = QuadraticTrinomial::new([1, 0, 3]); assert_eq!(Term::Term(1, 2), trinomial.term_with_degree(2)); assert_eq!(Term::ZeroTerm, trinomial.term_with_degree(1)); assert_eq!(Term::Term(3, 0), trinomial.term_with_degree(0));
pub fn degree(&self) -> Degree
[src]
Returns the degree of the QuadraticTrinomial
.
Example
use rustnomial::{SizedPolynomial, QuadraticTrinomial, Degree}; let trinomial = QuadraticTrinomial::new([1, 2, 3]); assert_eq!(Degree::Num(2), trinomial.degree()); let binomial = QuadraticTrinomial::new([0, 2, 3]); assert_eq!(Degree::Num(1), binomial.degree()); let monomial = QuadraticTrinomial::new([0, 0, 3]); assert_eq!(Degree::Num(0), monomial.degree()); let zero = QuadraticTrinomial::new([0, 0, 0]); assert_eq!(Degree::NegInf, zero.degree());
pub fn zero() -> Self
[src]
Return a QuadraticTrinomial
which is equal to zero.
Example
use rustnomial::{QuadraticTrinomial, SizedPolynomial}; assert!(QuadraticTrinomial::<i32>::zero().is_zero());
pub fn set_to_zero(&mut self)
[src]
Sets self to zero.
Example
use rustnomial::{QuadraticTrinomial, SizedPolynomial}; let mut non_zero = QuadraticTrinomial::new([1, 1, 1]); assert!(!non_zero.is_zero()); non_zero.set_to_zero(); assert!(non_zero.is_zero());
impl<N: Zero + Copy> SizedPolynomial<N> for SparsePolynomial<N>
[src]
pub fn len(&self) -> usize
[src]
pub fn term_with_degree(&self, degree: usize) -> Term<N>
[src]
pub fn degree(&self) -> Degree
[src]
Returns the degree of the SparsePolynomial
it is called on, corresponding to the
largest non-zero term.
Example
use rustnomial::{SizedPolynomial, SparsePolynomial, Degree}; let polynomial = SparsePolynomial::from(vec![1.0, 4.0, 4.0]); assert_eq!(Degree::Num(2), polynomial.degree());
pub fn zero() -> SparsePolynomial<N>
[src]
Returns a SparsePolynomial
with no terms.
Example
use rustnomial::{SizedPolynomial, SparsePolynomial}; let zero = SparsePolynomial::<i32>::zero(); assert!(zero.is_zero()); assert!(zero.term_iter().next().is_none()); assert!(zero.terms.is_empty());
pub fn set_to_zero(&mut self)
[src]
Sets self to zero.
Example
use rustnomial::{SparsePolynomial, SizedPolynomial}; let mut non_zero = SparsePolynomial::from(vec![0, 1]); assert!(!non_zero.is_zero()); non_zero.set_to_zero(); assert!(non_zero.is_zero());