[][src]Trait rustnomial::SizedPolynomial

pub trait SizedPolynomial<N> {
    pub fn len(&self) -> usize;
pub fn term_with_degree(&self, degree: usize) -> Term<N>;
pub fn degree(&self) -> Degree;
pub fn zero() -> Self
    where
        Self: Sized
;
pub fn set_to_zero(&mut self); pub fn term_iter(&self) -> TermIterator<'_, N>
    where
        Self: Sized
, { ... }
pub fn is_zero(&self) -> bool { ... } }

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]

Returns the zero-instance of SizedPolynomial.

pub fn set_to_zero(&mut self)[src]

Sets the terms of SizedPolynomial to zero.

Loading content...

Provided methods

pub fn term_iter(&self) -> TermIterator<'_, N> where
    Self: Sized
[src]

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());
Loading content...

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 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 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());
Loading content...