pub struct Polynomial<N> {
pub terms: Vec<N>,
}Expand description
A type that stores terms of a polynomial in a Vec.
Fields§
§terms: Vec<N>Implementations§
Source§impl<N> Polynomial<N>
impl<N> Polynomial<N>
Sourcepub fn new(terms: Vec<N>) -> Polynomial<N>
pub fn new(terms: Vec<N>) -> Polynomial<N>
Sourcepub fn trim(&mut self)
pub fn trim(&mut self)
Reduces the size of the Polynomial in memory if the leading terms are zero.
§Example
use rustnomial::Polynomial;
let mut polynomial = Polynomial::new(vec![1.0, 4.0, 4.0]);
polynomial.terms = vec![0.0, 0.0, 0.0, 0.0, 1.0, 4.0, 4.0];
polynomial.trim();
assert_eq!(vec![1.0, 4.0, 4.0], polynomial.terms);pub fn ordered_term_iter(&self) -> impl Iterator<Item = (N, usize)> + '_
Source§impl Polynomial<f64>
impl Polynomial<f64>
Sourcepub fn roots(self) -> Roots<f64>
pub fn roots(self) -> Roots<f64>
Return the roots of the Polynomial.
§Example
use rustnomial::{Polynomial, Roots, SizedPolynomial};
let zero = Polynomial::<f64>::zero();
assert_eq!(Roots::InfiniteRoots, zero.roots());
let constant = Polynomial::new(vec![1.]);
assert_eq!(Roots::NoRoots, constant.roots());
let monomial = Polynomial::new(vec![1.0, 0.,]);
assert_eq!(Roots::ManyRealRoots(vec![0.]), monomial.roots());
let binomial = Polynomial::new(vec![1.0, 2.0]);
assert_eq!(Roots::ManyRealRoots(vec![-2.0]), binomial.roots());
let trinomial = Polynomial::new(vec![1.0, 4.0, 4.0]);
assert_eq!(Roots::ManyRealRoots(vec![-2.0, -2.0]), trinomial.roots());
let quadnomial = Polynomial::new(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> Polynomial<N>
impl<N> Polynomial<N>
Sourcepub fn pow(&self, exp: usize) -> Polynomial<N>
pub fn pow(&self, exp: usize) -> Polynomial<N>
Raises the Polynomial to the power of exp, using exponentiation by squaring.
§Example
use rustnomial::Polynomial;
let polynomial = Polynomial::new(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> Polynomial<N>
impl<N> Polynomial<N>
Sourcepub fn div_mod(&self, rhs: &Polynomial<N>) -> (Polynomial<N>, Polynomial<N>)
pub fn div_mod(&self, rhs: &Polynomial<N>) -> (Polynomial<N>, Polynomial<N>)
Divides self by the given Polynomial, and returns the quotient and remainder.
Source§impl<N> Polynomial<N>
impl<N> Polynomial<N>
Sourcepub fn floor_div(&self, rhs: &Polynomial<N>) -> Polynomial<N>
pub fn floor_div(&self, rhs: &Polynomial<N>) -> Polynomial<N>
Divides self by the given Polynomial, and returns the quotient.
Trait Implementations§
Source§impl<N> Add for Polynomial<N>
impl<N> Add for Polynomial<N>
Source§type Output = Polynomial<N>
type Output = Polynomial<N>
+ operator.Source§fn add(self, rhs: Polynomial<N>) -> Polynomial<N>
fn add(self, rhs: Polynomial<N>) -> Polynomial<N>
+ operation. Read moreSource§impl<N: Copy + Zero + AddAssign> AddAssign for Polynomial<N>
impl<N: Copy + Zero + AddAssign> AddAssign for Polynomial<N>
Source§fn add_assign(&mut self, rhs: Polynomial<N>)
fn add_assign(&mut self, rhs: Polynomial<N>)
+= operation. Read moreSource§impl<N: Clone> Clone for Polynomial<N>
impl<N: Clone> Clone for Polynomial<N>
Source§fn clone(&self) -> Polynomial<N>
fn clone(&self) -> Polynomial<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 Polynomial<N>
impl<N: Debug> Debug for Polynomial<N>
Source§impl<N> Derivable<N> for Polynomial<N>
impl<N> Derivable<N> for Polynomial<N>
Source§fn derivative(&self) -> Polynomial<N>
fn derivative(&self) -> Polynomial<N>
Source§impl<N> Display for Polynomial<N>
impl<N> Display for Polynomial<N>
Source§impl<N> Div<N> for Polynomial<N>
impl<N> Div<N> for Polynomial<N>
Source§type Output = Polynomial<N>
type Output = Polynomial<N>
/ operator.Source§fn div(self, rhs: N) -> Polynomial<N>
fn div(self, rhs: N) -> Polynomial<N>
/ operation. Read moreSource§impl<N: Copy + DivAssign> DivAssign<N> for Polynomial<N>
impl<N: Copy + DivAssign> DivAssign<N> for Polynomial<N>
Source§fn div_assign(&mut self, rhs: N)
fn div_assign(&mut self, rhs: N)
/= operation. Read moreSource§impl<N> Evaluable<N> for Polynomial<N>
impl<N> Evaluable<N> for Polynomial<N>
Source§impl<N> FreeSizePolynomial<N> for Polynomial<N>
impl<N> FreeSizePolynomial<N> for Polynomial<N>
Source§fn from_terms(terms: &[(N, usize)]) -> Self
fn from_terms(terms: &[(N, usize)]) -> Self
Returns a Polynomial with the corresponding terms,
in order of ax^n + bx^(n-1) + … + cx + d
§Arguments
terms- A slice of (coefficient, degree) pairs.
§Example
use rustnomial::{FreeSizePolynomial, Polynomial};
// Corresponds to 1.0x^2 + 4.0x + 4.0
let polynomial = Polynomial::from_terms(&[(1.0, 2), (4.0, 1), (4.0, 0)]);
assert_eq!(Polynomial::new(vec![1., 4., 4.]), polynomial);Source§impl From<Polynomial<f32>> for Polynomial<f64>
impl From<Polynomial<f32>> for Polynomial<f64>
Source§fn from(item: Polynomial<f32>) -> Self
fn from(item: Polynomial<f32>) -> Self
Source§impl From<Polynomial<i16>> for Polynomial<f32>
impl From<Polynomial<i16>> for Polynomial<f32>
Source§fn from(item: Polynomial<i16>) -> Self
fn from(item: Polynomial<i16>) -> Self
Source§impl From<Polynomial<i16>> for Polynomial<f64>
impl From<Polynomial<i16>> for Polynomial<f64>
Source§fn from(item: Polynomial<i16>) -> Self
fn from(item: Polynomial<i16>) -> Self
Source§impl From<Polynomial<i16>> for Polynomial<i128>
impl From<Polynomial<i16>> for Polynomial<i128>
Source§fn from(item: Polynomial<i16>) -> Self
fn from(item: Polynomial<i16>) -> Self
Source§impl From<Polynomial<i16>> for Polynomial<i32>
impl From<Polynomial<i16>> for Polynomial<i32>
Source§fn from(item: Polynomial<i16>) -> Self
fn from(item: Polynomial<i16>) -> Self
Source§impl From<Polynomial<i16>> for Polynomial<i64>
impl From<Polynomial<i16>> for Polynomial<i64>
Source§fn from(item: Polynomial<i16>) -> Self
fn from(item: Polynomial<i16>) -> Self
Source§impl From<Polynomial<i32>> for Polynomial<f64>
impl From<Polynomial<i32>> for Polynomial<f64>
Source§fn from(item: Polynomial<i32>) -> Self
fn from(item: Polynomial<i32>) -> Self
Source§impl From<Polynomial<i32>> for Polynomial<i128>
impl From<Polynomial<i32>> for Polynomial<i128>
Source§fn from(item: Polynomial<i32>) -> Self
fn from(item: Polynomial<i32>) -> Self
Source§impl From<Polynomial<i32>> for Polynomial<i64>
impl From<Polynomial<i32>> for Polynomial<i64>
Source§fn from(item: Polynomial<i32>) -> Self
fn from(item: Polynomial<i32>) -> Self
Source§impl From<Polynomial<i64>> for Polynomial<i128>
impl From<Polynomial<i64>> for Polynomial<i128>
Source§fn from(item: Polynomial<i64>) -> Self
fn from(item: Polynomial<i64>) -> Self
Source§impl From<Polynomial<i8>> for Polynomial<f32>
impl From<Polynomial<i8>> for Polynomial<f32>
Source§fn from(item: Polynomial<i8>) -> Self
fn from(item: Polynomial<i8>) -> Self
Source§impl From<Polynomial<i8>> for Polynomial<f64>
impl From<Polynomial<i8>> for Polynomial<f64>
Source§fn from(item: Polynomial<i8>) -> Self
fn from(item: Polynomial<i8>) -> Self
Source§impl From<Polynomial<i8>> for Polynomial<i128>
impl From<Polynomial<i8>> for Polynomial<i128>
Source§fn from(item: Polynomial<i8>) -> Self
fn from(item: Polynomial<i8>) -> Self
Source§impl From<Polynomial<i8>> for Polynomial<i16>
impl From<Polynomial<i8>> for Polynomial<i16>
Source§fn from(item: Polynomial<i8>) -> Self
fn from(item: Polynomial<i8>) -> Self
Source§impl From<Polynomial<i8>> for Polynomial<i32>
impl From<Polynomial<i8>> for Polynomial<i32>
Source§fn from(item: Polynomial<i8>) -> Self
fn from(item: Polynomial<i8>) -> Self
Source§impl From<Polynomial<i8>> for Polynomial<i64>
impl From<Polynomial<i8>> for Polynomial<i64>
Source§fn from(item: Polynomial<i8>) -> Self
fn from(item: Polynomial<i8>) -> Self
Source§impl From<Polynomial<u16>> for Polynomial<f32>
impl From<Polynomial<u16>> for Polynomial<f32>
Source§fn from(item: Polynomial<u16>) -> Self
fn from(item: Polynomial<u16>) -> Self
Source§impl From<Polynomial<u16>> for Polynomial<f64>
impl From<Polynomial<u16>> for Polynomial<f64>
Source§fn from(item: Polynomial<u16>) -> Self
fn from(item: Polynomial<u16>) -> Self
Source§impl From<Polynomial<u16>> for Polynomial<i128>
impl From<Polynomial<u16>> for Polynomial<i128>
Source§fn from(item: Polynomial<u16>) -> Self
fn from(item: Polynomial<u16>) -> Self
Source§impl From<Polynomial<u16>> for Polynomial<i32>
impl From<Polynomial<u16>> for Polynomial<i32>
Source§fn from(item: Polynomial<u16>) -> Self
fn from(item: Polynomial<u16>) -> Self
Source§impl From<Polynomial<u16>> for Polynomial<i64>
impl From<Polynomial<u16>> for Polynomial<i64>
Source§fn from(item: Polynomial<u16>) -> Self
fn from(item: Polynomial<u16>) -> Self
Source§impl From<Polynomial<u16>> for Polynomial<u128>
impl From<Polynomial<u16>> for Polynomial<u128>
Source§fn from(item: Polynomial<u16>) -> Self
fn from(item: Polynomial<u16>) -> Self
Source§impl From<Polynomial<u16>> for Polynomial<u32>
impl From<Polynomial<u16>> for Polynomial<u32>
Source§fn from(item: Polynomial<u16>) -> Self
fn from(item: Polynomial<u16>) -> Self
Source§impl From<Polynomial<u16>> for Polynomial<u64>
impl From<Polynomial<u16>> for Polynomial<u64>
Source§fn from(item: Polynomial<u16>) -> Self
fn from(item: Polynomial<u16>) -> Self
Source§impl From<Polynomial<u32>> for Polynomial<f64>
impl From<Polynomial<u32>> for Polynomial<f64>
Source§fn from(item: Polynomial<u32>) -> Self
fn from(item: Polynomial<u32>) -> Self
Source§impl From<Polynomial<u32>> for Polynomial<i128>
impl From<Polynomial<u32>> for Polynomial<i128>
Source§fn from(item: Polynomial<u32>) -> Self
fn from(item: Polynomial<u32>) -> Self
Source§impl From<Polynomial<u32>> for Polynomial<i64>
impl From<Polynomial<u32>> for Polynomial<i64>
Source§fn from(item: Polynomial<u32>) -> Self
fn from(item: Polynomial<u32>) -> Self
Source§impl From<Polynomial<u32>> for Polynomial<u128>
impl From<Polynomial<u32>> for Polynomial<u128>
Source§fn from(item: Polynomial<u32>) -> Self
fn from(item: Polynomial<u32>) -> Self
Source§impl From<Polynomial<u32>> for Polynomial<u64>
impl From<Polynomial<u32>> for Polynomial<u64>
Source§fn from(item: Polynomial<u32>) -> Self
fn from(item: Polynomial<u32>) -> Self
Source§impl From<Polynomial<u64>> for Polynomial<i128>
impl From<Polynomial<u64>> for Polynomial<i128>
Source§fn from(item: Polynomial<u64>) -> Self
fn from(item: Polynomial<u64>) -> Self
Source§impl From<Polynomial<u64>> for Polynomial<u128>
impl From<Polynomial<u64>> for Polynomial<u128>
Source§fn from(item: Polynomial<u64>) -> Self
fn from(item: Polynomial<u64>) -> Self
Source§impl From<Polynomial<u8>> for Polynomial<f32>
impl From<Polynomial<u8>> for Polynomial<f32>
Source§fn from(item: Polynomial<u8>) -> Self
fn from(item: Polynomial<u8>) -> Self
Source§impl From<Polynomial<u8>> for Polynomial<f64>
impl From<Polynomial<u8>> for Polynomial<f64>
Source§fn from(item: Polynomial<u8>) -> Self
fn from(item: Polynomial<u8>) -> Self
Source§impl From<Polynomial<u8>> for Polynomial<i128>
impl From<Polynomial<u8>> for Polynomial<i128>
Source§fn from(item: Polynomial<u8>) -> Self
fn from(item: Polynomial<u8>) -> Self
Source§impl From<Polynomial<u8>> for Polynomial<i16>
impl From<Polynomial<u8>> for Polynomial<i16>
Source§fn from(item: Polynomial<u8>) -> Self
fn from(item: Polynomial<u8>) -> Self
Source§impl From<Polynomial<u8>> for Polynomial<i32>
impl From<Polynomial<u8>> for Polynomial<i32>
Source§fn from(item: Polynomial<u8>) -> Self
fn from(item: Polynomial<u8>) -> Self
Source§impl From<Polynomial<u8>> for Polynomial<i64>
impl From<Polynomial<u8>> for Polynomial<i64>
Source§fn from(item: Polynomial<u8>) -> Self
fn from(item: Polynomial<u8>) -> Self
Source§impl From<Polynomial<u8>> for Polynomial<u128>
impl From<Polynomial<u8>> for Polynomial<u128>
Source§fn from(item: Polynomial<u8>) -> Self
fn from(item: Polynomial<u8>) -> Self
Source§impl From<Polynomial<u8>> for Polynomial<u16>
impl From<Polynomial<u8>> for Polynomial<u16>
Source§fn from(item: Polynomial<u8>) -> Self
fn from(item: Polynomial<u8>) -> Self
Source§impl From<Polynomial<u8>> for Polynomial<u32>
impl From<Polynomial<u8>> for Polynomial<u32>
Source§fn from(item: Polynomial<u8>) -> Self
fn from(item: Polynomial<u8>) -> Self
Source§impl From<Polynomial<u8>> for Polynomial<u64>
impl From<Polynomial<u8>> for Polynomial<u64>
Source§fn from(item: Polynomial<u8>) -> Self
fn from(item: Polynomial<u8>) -> Self
Source§impl<N> From<Vec<N>> for Polynomial<N>
impl<N> From<Vec<N>> for Polynomial<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::{Polynomial};
// Corresponds to 1.0x^2 + 4.0x + 4.0
let polynomial = Polynomial::from(vec![1.0, 4.0, 4.0]);
let polynomial: Polynomial<f64> = vec![1.0, 4.0, 4.0].into();Source§impl<N> FromStr for Polynomial<N>
impl<N> FromStr for Polynomial<N>
Source§impl<N> Integrable<N, Polynomial<N>> for LinearBinomial<N>
impl<N> Integrable<N, Polynomial<N>> for LinearBinomial<N>
Source§fn integral(&self) -> Integral<N, Polynomial<N>>
fn integral(&self) -> Integral<N, Polynomial<N>>
Returns the integral of the LinearBinomial.
§Example
use rustnomial::{LinearBinomial, Integrable, Polynomial};
let binomial = LinearBinomial::new([2.0, 0.]);
let integral = binomial.integral();
assert_eq!(&Polynomial::new(vec![1.0, 0.0, 0.0]), integral.inner());Will panic if N can not losslessly represent 2usize.
Source§impl<N> Integrable<N, Polynomial<N>> for Polynomial<N>
impl<N> Integrable<N, Polynomial<N>> for Polynomial<N>
Source§fn integral(&self) -> Integral<N, Polynomial<N>>
fn integral(&self) -> Integral<N, Polynomial<N>>
Returns the integral of the Polynomial.
§Example
use rustnomial::{Polynomial, Integrable};
let polynomial = Polynomial::new(vec![1.0, 2.0, 5.0]);
let integral = polynomial.integral();
assert_eq!(&Polynomial::new(vec![1.0/3.0, 1.0, 5.0, 0.0]), integral.inner());§Errors
Will panic if N can not losslessly encode the numbers from 0 to the degree of self self.
Source§impl<N> Integrable<N, Polynomial<N>> for QuadraticTrinomial<N>
impl<N> Integrable<N, Polynomial<N>> for QuadraticTrinomial<N>
Source§fn integral(&self) -> Integral<N, Polynomial<N>>
fn integral(&self) -> Integral<N, Polynomial<N>>
Returns the integral of the Monomial.
§Example
use rustnomial::{QuadraticTrinomial, Integrable, Polynomial};
let trinomial = QuadraticTrinomial::new([3.0, 0., 0.]);
let integral = trinomial.integral();
assert_eq!(&Polynomial::new(vec![1.0, 0.0, 0.0, 0.0]), integral.inner());§Errors
Will panic if N can not losslessly represent 2usize or 3usize.
Source§impl<N> Mul<&Polynomial<N>> for &Polynomial<N>
impl<N> Mul<&Polynomial<N>> for &Polynomial<N>
Source§type Output = Polynomial<N>
type Output = Polynomial<N>
* operator.Source§fn mul(self, rhs: &Polynomial<N>) -> Polynomial<N>
fn mul(self, rhs: &Polynomial<N>) -> Polynomial<N>
* operation. Read moreSource§impl<N> Mul<&Polynomial<N>> for Polynomial<N>
impl<N> Mul<&Polynomial<N>> for Polynomial<N>
Source§type Output = Polynomial<N>
type Output = Polynomial<N>
* operator.Source§fn mul(self, rhs: &Polynomial<N>) -> Polynomial<N>
fn mul(self, rhs: &Polynomial<N>) -> Polynomial<N>
* operation. Read moreSource§impl<N: Zero + Copy + Mul<Output = N>> Mul<N> for Polynomial<N>
impl<N: Zero + Copy + Mul<Output = N>> Mul<N> for Polynomial<N>
Source§type Output = Polynomial<N>
type Output = Polynomial<N>
* operator.Source§fn mul(self, rhs: N) -> Polynomial<N>
fn mul(self, rhs: N) -> Polynomial<N>
* operation. Read moreSource§impl<N> Mul<Polynomial<N>> for &Polynomial<N>
impl<N> Mul<Polynomial<N>> for &Polynomial<N>
Source§type Output = Polynomial<N>
type Output = Polynomial<N>
* operator.Source§fn mul(self, rhs: Polynomial<N>) -> Polynomial<N>
fn mul(self, rhs: Polynomial<N>) -> Polynomial<N>
* operation. Read moreSource§impl<N> Mul for Polynomial<N>
impl<N> Mul for Polynomial<N>
Source§type Output = Polynomial<N>
type Output = Polynomial<N>
* operator.Source§fn mul(self, rhs: Polynomial<N>) -> Polynomial<N>
fn mul(self, rhs: Polynomial<N>) -> Polynomial<N>
* operation. Read moreSource§impl<N> MulAssign<&Polynomial<N>> for Polynomial<N>
impl<N> MulAssign<&Polynomial<N>> for Polynomial<N>
Source§fn mul_assign(&mut self, rhs: &Polynomial<N>)
fn mul_assign(&mut self, rhs: &Polynomial<N>)
*= operation. Read moreSource§impl<N: Copy + MulAssign> MulAssign<N> for Polynomial<N>
impl<N: Copy + MulAssign> MulAssign<N> for Polynomial<N>
Source§fn mul_assign(&mut self, rhs: N)
fn mul_assign(&mut self, rhs: N)
*= operation. Read moreSource§impl<N> MulAssign for Polynomial<N>
impl<N> MulAssign for Polynomial<N>
Source§fn mul_assign(&mut self, rhs: Polynomial<N>)
fn mul_assign(&mut self, rhs: Polynomial<N>)
*= operation. Read moreSource§impl<N> MutablePolynomial<N> for Polynomial<N>
impl<N> MutablePolynomial<N> for Polynomial<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 Polynomial<N>
impl<N> Neg for Polynomial<N>
Source§type Output = Polynomial<N>
type Output = Polynomial<N>
- operator.Source§fn neg(self) -> Polynomial<N>
fn neg(self) -> Polynomial<N>
- operation. Read moreSource§impl<N> PartialEq for Polynomial<N>
impl<N> PartialEq for Polynomial<N>
Source§fn eq(&self, other: &Self) -> bool
fn eq(&self, other: &Self) -> bool
Returns true if self and other have the same terms.
§Example
use rustnomial::Polynomial;
let a = Polynomial::new(vec![1.0, 2.0]);
let b = Polynomial::new(vec![2.0, 2.0]);
let c = Polynomial::new(vec![1.0, 0.0]);
assert_ne!(a, b);
assert_ne!(a, c);
assert_eq!(a, b - c);Source§impl<N> Rem for Polynomial<N>
impl<N> Rem for Polynomial<N>
Source§fn rem(self, rhs: Polynomial<N>) -> Polynomial<N>
fn rem(self, rhs: Polynomial<N>) -> Polynomial<N>
Returns the remainder of dividing self by rhs.
Source§type Output = Polynomial<N>
type Output = Polynomial<N>
% operator.Source§impl<N> RemAssign for Polynomial<N>
impl<N> RemAssign for Polynomial<N>
Source§fn rem_assign(&mut self, rhs: Polynomial<N>)
fn rem_assign(&mut self, rhs: Polynomial<N>)
Assign the remainder of dividing self by rhs to self.
Source§impl<N: Zero + Copy> Shl<i32> for Polynomial<N>
impl<N: Zero + Copy> Shl<i32> for Polynomial<N>
Source§type Output = Polynomial<N>
type Output = Polynomial<N>
<< operator.Source§impl<N: Zero + Copy> ShlAssign<i32> for Polynomial<N>
impl<N: Zero + Copy> ShlAssign<i32> for Polynomial<N>
Source§fn shl_assign(&mut self, rhs: i32)
fn shl_assign(&mut self, rhs: i32)
<<= operation. Read moreSource§impl<N: Zero + Copy> Shr<i32> for Polynomial<N>
impl<N: Zero + Copy> Shr<i32> for Polynomial<N>
Source§type Output = Polynomial<N>
type Output = Polynomial<N>
>> operator.Source§impl<N: Zero + Copy> ShrAssign<i32> for Polynomial<N>
impl<N: Zero + Copy> ShrAssign<i32> for Polynomial<N>
Source§fn shr_assign(&mut self, rhs: i32)
fn shr_assign(&mut self, rhs: i32)
>>= operation. Read moreSource§impl<N: Copy + Zero> SizedPolynomial<N> for Polynomial<N>
impl<N: Copy + Zero> SizedPolynomial<N> for Polynomial<N>
Source§fn degree(&self) -> Degree
fn degree(&self) -> Degree
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());Source§fn zero() -> Polynomial<N>
fn zero() -> Polynomial<N>
Returns a Polynomial with no terms.
§Example
use rustnomial::{SizedPolynomial, Polynomial};
let zero = Polynomial::<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::{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());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 Polynomial<N>
impl<N> Sub<&Polynomial<N>> for Polynomial<N>
Source§type Output = Polynomial<N>
type Output = Polynomial<N>
- operator.Source§fn sub(self, rhs: &Polynomial<N>) -> Polynomial<N>
fn sub(self, rhs: &Polynomial<N>) -> Polynomial<N>
- operation. Read moreSource§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 Polynomial<N>
impl<N> Sub for Polynomial<N>
Source§type Output = Polynomial<N>
type Output = Polynomial<N>
- operator.Source§fn sub(self, rhs: Polynomial<N>) -> Polynomial<N>
fn sub(self, rhs: Polynomial<N>) -> Polynomial<N>
- operation. Read moreSource§impl<N> SubAssign<&Polynomial<N>> for Polynomial<N>
impl<N> SubAssign<&Polynomial<N>> for Polynomial<N>
Source§fn sub_assign(&mut self, rhs: &Polynomial<N>)
fn sub_assign(&mut self, rhs: &Polynomial<N>)
-= operation. Read moreSource§impl<N> SubAssign for Polynomial<N>
impl<N> SubAssign for Polynomial<N>
Source§fn sub_assign(&mut self, rhs: Polynomial<N>)
fn sub_assign(&mut self, rhs: Polynomial<N>)
-= operation. Read more