pub struct SparsePolynomial<N> {
pub terms: BTreeMap<usize, N>,
}Expand description
A type which stores the terms of a polynomial in a map. It is intended to store the terms
of polynomials where the degree is significantly larger than the number of non-zero terms.
Operations are significantly slower than with Polynomial if the number of non-zero terms
is very close to the degree.
Fields§
§terms: BTreeMap<usize, N>Implementations§
Source§impl SparsePolynomial<f64>
impl SparsePolynomial<f64>
Sourcepub fn roots(self) -> Roots<f64>
pub fn roots(self) -> Roots<f64>
Return the roots of the SparsePolynomial.
§Example
use rustnomial::{SparsePolynomial, Roots, SizedPolynomial};
let zero = SparsePolynomial::<f64>::zero();
assert_eq!(Roots::InfiniteRoots, zero.roots());
let constant = SparsePolynomial::from(vec![1.]);
assert_eq!(Roots::NoRoots, constant.roots());
let monomial = SparsePolynomial::from(vec![1.0, 0.,]);
assert_eq!(Roots::ManyRealRoots(vec![0.]), monomial.roots());
let binomial = SparsePolynomial::from(vec![1.0, 2.0]);
assert_eq!(Roots::ManyRealRoots(vec![-2.0]), binomial.roots());
let trinomial = SparsePolynomial::from(vec![1.0, 4.0, 4.0]);
assert_eq!(Roots::ManyRealRoots(vec![-2.0, -2.0]), trinomial.roots());
let quadnomial = SparsePolynomial::from(vec![1.0, 6.0, 12.0, 8.0]);
assert_eq!(Roots::ManyRealRoots(vec![-2.0, -2.0, -2.0]), quadnomial.roots());Source§impl<N: Copy> SparsePolynomial<N>
impl<N: Copy> SparsePolynomial<N>
pub fn new(terms: BTreeMap<usize, N>) -> SparsePolynomial<N>
Source§impl<N: Copy + Zero> SparsePolynomial<N>
impl<N: Copy + Zero> SparsePolynomial<N>
pub fn ordered_term_iter(&self) -> impl Iterator<Item = (N, usize)> + '_
Source§impl<N> SparsePolynomial<N>
impl<N> SparsePolynomial<N>
pub fn borrow_mul(&self, rhs: &SparsePolynomial<N>) -> SparsePolynomial<N>
Sourcepub fn pow(&self, exp: usize) -> SparsePolynomial<N>
pub fn pow(&self, exp: usize) -> SparsePolynomial<N>
Raises the SparsePolynomial to the power of exp, using exponentiation by squaring.
§Example
use rustnomial::SparsePolynomial;
let polynomial = SparsePolynomial::from(vec![1.0, 2.0]);
let polynomial_sqr = polynomial.pow(2);
let polynomial_cub = polynomial.pow(3);
assert_eq!(polynomial.clone() * polynomial.clone(), polynomial_sqr);
assert_eq!(polynomial_sqr.clone() * polynomial.clone(), polynomial_cub);Source§impl<N> SparsePolynomial<N>
impl<N> SparsePolynomial<N>
Sourcepub fn div_mod(
&self,
rhs: &SparsePolynomial<N>,
) -> (SparsePolynomial<N>, SparsePolynomial<N>)
pub fn div_mod( &self, rhs: &SparsePolynomial<N>, ) -> (SparsePolynomial<N>, SparsePolynomial<N>)
Divides self by the given SparsePolynomial, and returns the quotient and remainder.
§Example
use rustnomial::SparsePolynomial;
let polynomial = SparsePolynomial::from(vec![1.0, 2.0]);Trait Implementations§
Source§impl<N> Add for SparsePolynomial<N>
impl<N> Add for SparsePolynomial<N>
Source§type Output = SparsePolynomial<N>
type Output = SparsePolynomial<N>
+ operator.Source§fn add(self, rhs: SparsePolynomial<N>) -> SparsePolynomial<N>
fn add(self, rhs: SparsePolynomial<N>) -> SparsePolynomial<N>
+ operation. Read moreSource§impl<N: Copy + AddAssign> AddAssign for SparsePolynomial<N>
impl<N: Copy + AddAssign> AddAssign for SparsePolynomial<N>
Source§fn add_assign(&mut self, rhs: SparsePolynomial<N>)
fn add_assign(&mut self, rhs: SparsePolynomial<N>)
+= operation. Read moreSource§impl<N: Clone> Clone for SparsePolynomial<N>
impl<N: Clone> Clone for SparsePolynomial<N>
Source§fn clone(&self) -> SparsePolynomial<N>
fn clone(&self) -> SparsePolynomial<N>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<N: Debug> Debug for SparsePolynomial<N>
impl<N: Debug> Debug for SparsePolynomial<N>
Source§impl<N> Derivable<N> for SparsePolynomial<N>
impl<N> Derivable<N> for SparsePolynomial<N>
Source§fn derivative(&self) -> SparsePolynomial<N>
fn derivative(&self) -> SparsePolynomial<N>
Returns the derivative of the SparsePolynomial.
§Example
use rustnomial::{SparsePolynomial, Derivable};
let polynomial = SparsePolynomial::from(vec![4, 1, 5]);
assert_eq!(SparsePolynomial::from(vec![8, 1]), polynomial.derivative());§Errors
Will panic if a term has a degree which does not have a lossless
representation in N.
Source§impl<N> Display for SparsePolynomial<N>
impl<N> Display for SparsePolynomial<N>
Source§impl<N> Div<N> for SparsePolynomial<N>
impl<N> Div<N> for SparsePolynomial<N>
Source§type Output = SparsePolynomial<N>
type Output = SparsePolynomial<N>
/ operator.Source§fn div(self, rhs: N) -> SparsePolynomial<N>
fn div(self, rhs: N) -> SparsePolynomial<N>
/ operation. Read moreSource§impl<N> DivAssign<N> for SparsePolynomial<N>
impl<N> DivAssign<N> for SparsePolynomial<N>
Source§fn div_assign(&mut self, rhs: N)
fn div_assign(&mut self, rhs: N)
/= operation. Read moreSource§impl<N> Evaluable<N> for SparsePolynomial<N>
impl<N> Evaluable<N> for SparsePolynomial<N>
Source§impl<N> FreeSizePolynomial<N> for SparsePolynomial<N>
impl<N> FreeSizePolynomial<N> for SparsePolynomial<N>
Source§fn from_terms(terms: &[(N, usize)]) -> Self
fn from_terms(terms: &[(N, usize)]) -> Self
Source§impl From<SparsePolynomial<f32>> for SparsePolynomial<f64>
impl From<SparsePolynomial<f32>> for SparsePolynomial<f64>
Source§fn from(item: SparsePolynomial<f32>) -> Self
fn from(item: SparsePolynomial<f32>) -> Self
Source§impl From<SparsePolynomial<i16>> for SparsePolynomial<f32>
impl From<SparsePolynomial<i16>> for SparsePolynomial<f32>
Source§fn from(item: SparsePolynomial<i16>) -> Self
fn from(item: SparsePolynomial<i16>) -> Self
Source§impl From<SparsePolynomial<i16>> for SparsePolynomial<f64>
impl From<SparsePolynomial<i16>> for SparsePolynomial<f64>
Source§fn from(item: SparsePolynomial<i16>) -> Self
fn from(item: SparsePolynomial<i16>) -> Self
Source§impl From<SparsePolynomial<i16>> for SparsePolynomial<i128>
impl From<SparsePolynomial<i16>> for SparsePolynomial<i128>
Source§fn from(item: SparsePolynomial<i16>) -> Self
fn from(item: SparsePolynomial<i16>) -> Self
Source§impl From<SparsePolynomial<i16>> for SparsePolynomial<i32>
impl From<SparsePolynomial<i16>> for SparsePolynomial<i32>
Source§fn from(item: SparsePolynomial<i16>) -> Self
fn from(item: SparsePolynomial<i16>) -> Self
Source§impl From<SparsePolynomial<i16>> for SparsePolynomial<i64>
impl From<SparsePolynomial<i16>> for SparsePolynomial<i64>
Source§fn from(item: SparsePolynomial<i16>) -> Self
fn from(item: SparsePolynomial<i16>) -> Self
Source§impl From<SparsePolynomial<i32>> for SparsePolynomial<f64>
impl From<SparsePolynomial<i32>> for SparsePolynomial<f64>
Source§fn from(item: SparsePolynomial<i32>) -> Self
fn from(item: SparsePolynomial<i32>) -> Self
Source§impl From<SparsePolynomial<i32>> for SparsePolynomial<i128>
impl From<SparsePolynomial<i32>> for SparsePolynomial<i128>
Source§fn from(item: SparsePolynomial<i32>) -> Self
fn from(item: SparsePolynomial<i32>) -> Self
Source§impl From<SparsePolynomial<i32>> for SparsePolynomial<i64>
impl From<SparsePolynomial<i32>> for SparsePolynomial<i64>
Source§fn from(item: SparsePolynomial<i32>) -> Self
fn from(item: SparsePolynomial<i32>) -> Self
Source§impl From<SparsePolynomial<i64>> for SparsePolynomial<i128>
impl From<SparsePolynomial<i64>> for SparsePolynomial<i128>
Source§fn from(item: SparsePolynomial<i64>) -> Self
fn from(item: SparsePolynomial<i64>) -> Self
Source§impl From<SparsePolynomial<i8>> for SparsePolynomial<f32>
impl From<SparsePolynomial<i8>> for SparsePolynomial<f32>
Source§fn from(item: SparsePolynomial<i8>) -> Self
fn from(item: SparsePolynomial<i8>) -> Self
Source§impl From<SparsePolynomial<i8>> for SparsePolynomial<f64>
impl From<SparsePolynomial<i8>> for SparsePolynomial<f64>
Source§fn from(item: SparsePolynomial<i8>) -> Self
fn from(item: SparsePolynomial<i8>) -> Self
Source§impl From<SparsePolynomial<i8>> for SparsePolynomial<i128>
impl From<SparsePolynomial<i8>> for SparsePolynomial<i128>
Source§fn from(item: SparsePolynomial<i8>) -> Self
fn from(item: SparsePolynomial<i8>) -> Self
Source§impl From<SparsePolynomial<i8>> for SparsePolynomial<i16>
impl From<SparsePolynomial<i8>> for SparsePolynomial<i16>
Source§fn from(item: SparsePolynomial<i8>) -> Self
fn from(item: SparsePolynomial<i8>) -> Self
Source§impl From<SparsePolynomial<i8>> for SparsePolynomial<i32>
impl From<SparsePolynomial<i8>> for SparsePolynomial<i32>
Source§fn from(item: SparsePolynomial<i8>) -> Self
fn from(item: SparsePolynomial<i8>) -> Self
Source§impl From<SparsePolynomial<i8>> for SparsePolynomial<i64>
impl From<SparsePolynomial<i8>> for SparsePolynomial<i64>
Source§fn from(item: SparsePolynomial<i8>) -> Self
fn from(item: SparsePolynomial<i8>) -> Self
Source§impl From<SparsePolynomial<u16>> for SparsePolynomial<f32>
impl From<SparsePolynomial<u16>> for SparsePolynomial<f32>
Source§fn from(item: SparsePolynomial<u16>) -> Self
fn from(item: SparsePolynomial<u16>) -> Self
Source§impl From<SparsePolynomial<u16>> for SparsePolynomial<f64>
impl From<SparsePolynomial<u16>> for SparsePolynomial<f64>
Source§fn from(item: SparsePolynomial<u16>) -> Self
fn from(item: SparsePolynomial<u16>) -> Self
Source§impl From<SparsePolynomial<u16>> for SparsePolynomial<i128>
impl From<SparsePolynomial<u16>> for SparsePolynomial<i128>
Source§fn from(item: SparsePolynomial<u16>) -> Self
fn from(item: SparsePolynomial<u16>) -> Self
Source§impl From<SparsePolynomial<u16>> for SparsePolynomial<i32>
impl From<SparsePolynomial<u16>> for SparsePolynomial<i32>
Source§fn from(item: SparsePolynomial<u16>) -> Self
fn from(item: SparsePolynomial<u16>) -> Self
Source§impl From<SparsePolynomial<u16>> for SparsePolynomial<i64>
impl From<SparsePolynomial<u16>> for SparsePolynomial<i64>
Source§fn from(item: SparsePolynomial<u16>) -> Self
fn from(item: SparsePolynomial<u16>) -> Self
Source§impl From<SparsePolynomial<u16>> for SparsePolynomial<u128>
impl From<SparsePolynomial<u16>> for SparsePolynomial<u128>
Source§fn from(item: SparsePolynomial<u16>) -> Self
fn from(item: SparsePolynomial<u16>) -> Self
Source§impl From<SparsePolynomial<u16>> for SparsePolynomial<u32>
impl From<SparsePolynomial<u16>> for SparsePolynomial<u32>
Source§fn from(item: SparsePolynomial<u16>) -> Self
fn from(item: SparsePolynomial<u16>) -> Self
Source§impl From<SparsePolynomial<u16>> for SparsePolynomial<u64>
impl From<SparsePolynomial<u16>> for SparsePolynomial<u64>
Source§fn from(item: SparsePolynomial<u16>) -> Self
fn from(item: SparsePolynomial<u16>) -> Self
Source§impl From<SparsePolynomial<u32>> for SparsePolynomial<f64>
impl From<SparsePolynomial<u32>> for SparsePolynomial<f64>
Source§fn from(item: SparsePolynomial<u32>) -> Self
fn from(item: SparsePolynomial<u32>) -> Self
Source§impl From<SparsePolynomial<u32>> for SparsePolynomial<i128>
impl From<SparsePolynomial<u32>> for SparsePolynomial<i128>
Source§fn from(item: SparsePolynomial<u32>) -> Self
fn from(item: SparsePolynomial<u32>) -> Self
Source§impl From<SparsePolynomial<u32>> for SparsePolynomial<i64>
impl From<SparsePolynomial<u32>> for SparsePolynomial<i64>
Source§fn from(item: SparsePolynomial<u32>) -> Self
fn from(item: SparsePolynomial<u32>) -> Self
Source§impl From<SparsePolynomial<u32>> for SparsePolynomial<u128>
impl From<SparsePolynomial<u32>> for SparsePolynomial<u128>
Source§fn from(item: SparsePolynomial<u32>) -> Self
fn from(item: SparsePolynomial<u32>) -> Self
Source§impl From<SparsePolynomial<u32>> for SparsePolynomial<u64>
impl From<SparsePolynomial<u32>> for SparsePolynomial<u64>
Source§fn from(item: SparsePolynomial<u32>) -> Self
fn from(item: SparsePolynomial<u32>) -> Self
Source§impl From<SparsePolynomial<u64>> for SparsePolynomial<i128>
impl From<SparsePolynomial<u64>> for SparsePolynomial<i128>
Source§fn from(item: SparsePolynomial<u64>) -> Self
fn from(item: SparsePolynomial<u64>) -> Self
Source§impl From<SparsePolynomial<u64>> for SparsePolynomial<u128>
impl From<SparsePolynomial<u64>> for SparsePolynomial<u128>
Source§fn from(item: SparsePolynomial<u64>) -> Self
fn from(item: SparsePolynomial<u64>) -> Self
Source§impl From<SparsePolynomial<u8>> for SparsePolynomial<f32>
impl From<SparsePolynomial<u8>> for SparsePolynomial<f32>
Source§fn from(item: SparsePolynomial<u8>) -> Self
fn from(item: SparsePolynomial<u8>) -> Self
Source§impl From<SparsePolynomial<u8>> for SparsePolynomial<f64>
impl From<SparsePolynomial<u8>> for SparsePolynomial<f64>
Source§fn from(item: SparsePolynomial<u8>) -> Self
fn from(item: SparsePolynomial<u8>) -> Self
Source§impl From<SparsePolynomial<u8>> for SparsePolynomial<i128>
impl From<SparsePolynomial<u8>> for SparsePolynomial<i128>
Source§fn from(item: SparsePolynomial<u8>) -> Self
fn from(item: SparsePolynomial<u8>) -> Self
Source§impl From<SparsePolynomial<u8>> for SparsePolynomial<i16>
impl From<SparsePolynomial<u8>> for SparsePolynomial<i16>
Source§fn from(item: SparsePolynomial<u8>) -> Self
fn from(item: SparsePolynomial<u8>) -> Self
Source§impl From<SparsePolynomial<u8>> for SparsePolynomial<i32>
impl From<SparsePolynomial<u8>> for SparsePolynomial<i32>
Source§fn from(item: SparsePolynomial<u8>) -> Self
fn from(item: SparsePolynomial<u8>) -> Self
Source§impl From<SparsePolynomial<u8>> for SparsePolynomial<i64>
impl From<SparsePolynomial<u8>> for SparsePolynomial<i64>
Source§fn from(item: SparsePolynomial<u8>) -> Self
fn from(item: SparsePolynomial<u8>) -> Self
Source§impl From<SparsePolynomial<u8>> for SparsePolynomial<u128>
impl From<SparsePolynomial<u8>> for SparsePolynomial<u128>
Source§fn from(item: SparsePolynomial<u8>) -> Self
fn from(item: SparsePolynomial<u8>) -> Self
Source§impl From<SparsePolynomial<u8>> for SparsePolynomial<u16>
impl From<SparsePolynomial<u8>> for SparsePolynomial<u16>
Source§fn from(item: SparsePolynomial<u8>) -> Self
fn from(item: SparsePolynomial<u8>) -> Self
Source§impl From<SparsePolynomial<u8>> for SparsePolynomial<u32>
impl From<SparsePolynomial<u8>> for SparsePolynomial<u32>
Source§fn from(item: SparsePolynomial<u8>) -> Self
fn from(item: SparsePolynomial<u8>) -> Self
Source§impl From<SparsePolynomial<u8>> for SparsePolynomial<u64>
impl From<SparsePolynomial<u8>> for SparsePolynomial<u64>
Source§fn from(item: SparsePolynomial<u8>) -> Self
fn from(item: SparsePolynomial<u8>) -> Self
Source§impl<N> From<Vec<N>> for SparsePolynomial<N>
impl<N> From<Vec<N>> for SparsePolynomial<N>
Source§fn from(term_vec: Vec<N>) -> Self
fn from(term_vec: Vec<N>) -> Self
Returns a SparsePolynomial with the corresponding terms,
in order of ax^n + bx^(n-1) + … + cx + d
§Arguments
term_vec- A vector of constants, in decreasing order of degree.
§Example
use rustnomial::SparsePolynomial;
// Corresponds to 1.0x^2 + 4.0x + 4.0
let polynomial = SparsePolynomial::from(vec![1.0, 4.0, 4.0]);Source§impl<N> FromStr for SparsePolynomial<N>
impl<N> FromStr for SparsePolynomial<N>
Source§impl<N> Integrable<N, SparsePolynomial<N>> for Monomial<N>
impl<N> Integrable<N, SparsePolynomial<N>> for Monomial<N>
Source§fn integral(&self) -> Integral<N, SparsePolynomial<N>>
fn integral(&self) -> Integral<N, SparsePolynomial<N>>
Returns the integral of the Monomial.
§Example
use rustnomial::{Monomial, SparsePolynomial, Integrable, FreeSizePolynomial};
let monomial = Monomial::new(3.0, 2);
let integral = monomial.integral();
assert_eq!(&SparsePolynomial::from_terms(&[(1.0, 3)]), integral.inner());
assert_eq!(1., integral.eval(0., 1.));Source§impl<N> Integrable<N, SparsePolynomial<N>> for SparsePolynomial<N>
impl<N> Integrable<N, SparsePolynomial<N>> for SparsePolynomial<N>
Source§fn integral(&self) -> Integral<N, SparsePolynomial<N>>
fn integral(&self) -> Integral<N, SparsePolynomial<N>>
Returns the integral of the Polynomial.
§Example
use rustnomial::{SparsePolynomial, Integrable};
let polynomial = SparsePolynomial::from(vec![1.0, 2.0, 5.0]);
let integral = polynomial.integral();
assert_eq!(&SparsePolynomial::from(vec![1.0/3.0, 1.0, 5.0, 0.0]), integral.inner());§Errors
Will panic if a term has a degree, which when incremented by one, does not
have a lossless representation in N.
Source§impl<N> Mul<&SparsePolynomial<N>> for SparsePolynomial<N>
impl<N> Mul<&SparsePolynomial<N>> for SparsePolynomial<N>
Source§type Output = SparsePolynomial<N>
type Output = SparsePolynomial<N>
* operator.Source§fn mul(self, rhs: &SparsePolynomial<N>) -> SparsePolynomial<N>
fn mul(self, rhs: &SparsePolynomial<N>) -> SparsePolynomial<N>
* operation. Read moreSource§impl<N: Copy + Mul<Output = N>> Mul<N> for SparsePolynomial<N>
impl<N: Copy + Mul<Output = N>> Mul<N> for SparsePolynomial<N>
Source§type Output = SparsePolynomial<N>
type Output = SparsePolynomial<N>
* operator.Source§fn mul(self, rhs: N) -> SparsePolynomial<N>
fn mul(self, rhs: N) -> SparsePolynomial<N>
* operation. Read moreSource§impl<N> Mul for SparsePolynomial<N>
impl<N> Mul for SparsePolynomial<N>
Source§type Output = SparsePolynomial<N>
type Output = SparsePolynomial<N>
* operator.Source§fn mul(self, rhs: SparsePolynomial<N>) -> SparsePolynomial<N>
fn mul(self, rhs: SparsePolynomial<N>) -> SparsePolynomial<N>
* operation. Read moreSource§impl<N> MulAssign<&SparsePolynomial<N>> for SparsePolynomial<N>
impl<N> MulAssign<&SparsePolynomial<N>> for SparsePolynomial<N>
Source§fn mul_assign(&mut self, rhs: &SparsePolynomial<N>)
fn mul_assign(&mut self, rhs: &SparsePolynomial<N>)
*= operation. Read moreSource§impl<N: Copy + MulAssign> MulAssign<N> for SparsePolynomial<N>
impl<N: Copy + MulAssign> MulAssign<N> for SparsePolynomial<N>
Source§fn mul_assign(&mut self, rhs: N)
fn mul_assign(&mut self, rhs: N)
*= operation. Read moreSource§impl<N> MulAssign for SparsePolynomial<N>
impl<N> MulAssign for SparsePolynomial<N>
Source§fn mul_assign(&mut self, rhs: SparsePolynomial<N>)
fn mul_assign(&mut self, rhs: SparsePolynomial<N>)
*= operation. Read moreSource§impl<N> MutablePolynomial<N> for SparsePolynomial<N>
impl<N> MutablePolynomial<N> for SparsePolynomial<N>
Source§fn try_add_term(&mut self, coeff: N, degree: usize) -> Result<(), TryAddError>
fn try_add_term(&mut self, coeff: N, degree: usize) -> Result<(), TryAddError>
degree to self, returning an error
if the particular term can not be added to self without violating constraints. Read moreSource§fn try_sub_term(&mut self, coeff: N, degree: usize) -> Result<(), TryAddError>
fn try_sub_term(&mut self, coeff: N, degree: usize) -> Result<(), TryAddError>
degree from self, returning
an error if the particular term can not be subtracted from self without violating
constraints. Read moreSource§impl<N> Neg for SparsePolynomial<N>
impl<N> Neg for SparsePolynomial<N>
Source§type Output = SparsePolynomial<N>
type Output = SparsePolynomial<N>
- operator.Source§fn neg(self) -> SparsePolynomial<N>
fn neg(self) -> SparsePolynomial<N>
- operation. Read moreSource§impl<N> PartialEq for SparsePolynomial<N>
impl<N> PartialEq for SparsePolynomial<N>
Source§fn eq(&self, other: &Self) -> bool
fn eq(&self, other: &Self) -> bool
Returns true if self has the same terms as other.
§Example
use rustnomial::SparsePolynomial;
let a = SparsePolynomial::from(vec![1.0, 2.0]);
let b = SparsePolynomial::from(vec![2.0, 2.0]);
let c = SparsePolynomial::from(vec![1.0, 0.0]);
assert_ne!(a, b);
assert_ne!(a, c);
assert_eq!(a, b - c);Source§impl<N> Rem for SparsePolynomial<N>
impl<N> Rem for SparsePolynomial<N>
Source§fn rem(self, rhs: SparsePolynomial<N>) -> SparsePolynomial<N>
fn rem(self, rhs: SparsePolynomial<N>) -> SparsePolynomial<N>
Returns the remainder of dividing self by rhs.
Source§type Output = SparsePolynomial<N>
type Output = SparsePolynomial<N>
% operator.Source§impl<N> RemAssign for SparsePolynomial<N>
impl<N> RemAssign for SparsePolynomial<N>
Source§fn rem_assign(&mut self, rhs: SparsePolynomial<N>)
fn rem_assign(&mut self, rhs: SparsePolynomial<N>)
Assign the remainder of dividing self by rhs to self.
Source§impl<N: Copy> Shl<i32> for SparsePolynomial<N>
impl<N: Copy> Shl<i32> for SparsePolynomial<N>
Source§type Output = SparsePolynomial<N>
type Output = SparsePolynomial<N>
<< operator.Source§impl<N: Copy> ShlAssign<i32> for SparsePolynomial<N>
impl<N: Copy> ShlAssign<i32> for SparsePolynomial<N>
Source§fn shl_assign(&mut self, rhs: i32)
fn shl_assign(&mut self, rhs: i32)
<<= operation. Read moreSource§impl<N: Copy> Shr<i32> for SparsePolynomial<N>
impl<N: Copy> Shr<i32> for SparsePolynomial<N>
Source§type Output = SparsePolynomial<N>
type Output = SparsePolynomial<N>
>> operator.Source§impl<N: Copy> ShrAssign<i32> for SparsePolynomial<N>
impl<N: Copy> ShrAssign<i32> for SparsePolynomial<N>
Source§fn shr_assign(&mut self, rhs: i32)
fn shr_assign(&mut self, rhs: i32)
>>= operation. Read moreSource§impl<N: Zero + Copy> SizedPolynomial<N> for SparsePolynomial<N>
impl<N: Zero + Copy> SizedPolynomial<N> for SparsePolynomial<N>
Source§fn degree(&self) -> Degree
fn degree(&self) -> Degree
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());Source§fn zero() -> SparsePolynomial<N>
fn zero() -> SparsePolynomial<N>
Returns a SparsePolynomial with no terms.
§Example
use rustnomial::{SizedPolynomial, SparsePolynomial};
let zero = SparsePolynomial::<i32>::zero();
assert!(zero.is_zero());
assert!(zero.ordered_term_iter().next().is_none());
assert!(zero.terms.is_empty());Source§fn set_to_zero(&mut self)
fn set_to_zero(&mut self)
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());Source§fn term_with_degree(&self, degree: usize) -> Term<N>
fn term_with_degree(&self, degree: usize) -> Term<N>
self.
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, so this does
not indicate that the final term has been reached.Source§impl<N> Sub<Polynomial<N>> for SparsePolynomial<N>
impl<N> Sub<Polynomial<N>> for SparsePolynomial<N>
Source§type Output = SparsePolynomial<N>
type Output = SparsePolynomial<N>
- operator.Source§fn sub(self, rhs: Polynomial<N>) -> SparsePolynomial<N>
fn sub(self, rhs: Polynomial<N>) -> SparsePolynomial<N>
- operation. Read moreSource§impl<N> Sub for SparsePolynomial<N>
impl<N> Sub for SparsePolynomial<N>
Source§type Output = SparsePolynomial<N>
type Output = SparsePolynomial<N>
- operator.Source§fn sub(self, rhs: SparsePolynomial<N>) -> SparsePolynomial<N>
fn sub(self, rhs: SparsePolynomial<N>) -> SparsePolynomial<N>
- operation. Read moreSource§impl<N> SubAssign for SparsePolynomial<N>
impl<N> SubAssign for SparsePolynomial<N>
Source§fn sub_assign(&mut self, rhs: SparsePolynomial<N>)
fn sub_assign(&mut self, rhs: SparsePolynomial<N>)
-= operation. Read more