pub struct LinearBinomial<N> {
pub coefficients: [N; 2],
}Expand description
A type that stores terms of a linear binomial in a static array. Operations are much faster than on Polynomial for the same size polynomial, but terms can not be added freely.
Fields§
§coefficients: [N; 2]Implementations§
Source§impl<N: Sized> LinearBinomial<N>
impl<N: Sized> LinearBinomial<N>
Sourcepub fn new(coefficients: [N; 2]) -> LinearBinomial<N>
pub fn new(coefficients: [N; 2]) -> LinearBinomial<N>
Create a LinearBinomial with the given terms.
§Example
use rustnomial::{SizedPolynomial, LinearBinomial, Degree};
let binomial = LinearBinomial::new([3, 2]);
assert_eq!(Degree::Num(1), binomial.degree());Source§impl<N: Zero + Copy> LinearBinomial<N>
impl<N: Zero + Copy> LinearBinomial<N>
pub fn ordered_term_iter(&self) -> impl Iterator<Item = (N, usize)> + '_
Source§impl<N> LinearBinomial<N>
impl<N> LinearBinomial<N>
Sourcepub fn root(&self) -> Roots<N>
pub fn root(&self) -> Roots<N>
Return the root of LinearBinomial.
§Example
use rustnomial::{LinearBinomial, Roots, SizedPolynomial};
let binomial = LinearBinomial::new([1.0, 2.0]);
assert_eq!(Roots::OneRealRoot(-2.0), binomial.root());
let zero = LinearBinomial::<i32>::zero();
assert_eq!(Roots::InfiniteRoots, zero.root());
let constant = LinearBinomial::new([0, 1]);
assert_eq!(Roots::NoRoots, constant.root());Trait Implementations§
Source§impl<N> Add for LinearBinomial<N>
impl<N> Add for LinearBinomial<N>
Source§type Output = LinearBinomial<N>
type Output = LinearBinomial<N>
The resulting type after applying the
+ operator.Source§fn add(self, rhs: LinearBinomial<N>) -> LinearBinomial<N>
fn add(self, rhs: LinearBinomial<N>) -> LinearBinomial<N>
Performs the
+ operation. Read moreSource§impl<N: Copy + AddAssign> AddAssign for LinearBinomial<N>
impl<N: Copy + AddAssign> AddAssign for LinearBinomial<N>
Source§fn add_assign(&mut self, rhs: LinearBinomial<N>)
fn add_assign(&mut self, rhs: LinearBinomial<N>)
Performs the
+= operation. Read moreSource§impl<N: Clone> Clone for LinearBinomial<N>
impl<N: Clone> Clone for LinearBinomial<N>
Source§fn clone(&self) -> LinearBinomial<N>
fn clone(&self) -> LinearBinomial<N>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<N: Debug> Debug for LinearBinomial<N>
impl<N: Debug> Debug for LinearBinomial<N>
Source§impl<N> Derivable<N> for LinearBinomial<N>
impl<N> Derivable<N> for LinearBinomial<N>
Source§fn derivative(&self) -> LinearBinomial<N>
fn derivative(&self) -> LinearBinomial<N>
Returns the derivative of the LinearBinomial.
§Example
use rustnomial::{LinearBinomial, Derivable};
let binomial = LinearBinomial::new([3.0, 1.0]);
assert_eq!(LinearBinomial::new([0., 3.0]), binomial.derivative());Source§impl<N> Display for LinearBinomial<N>
impl<N> Display for LinearBinomial<N>
Source§impl<N: Div<Output = N> + Copy> Div<N> for LinearBinomial<N>
impl<N: Div<Output = N> + Copy> Div<N> for LinearBinomial<N>
Source§type Output = LinearBinomial<N>
type Output = LinearBinomial<N>
The resulting type after applying the
/ operator.Source§fn div(self, rhs: N) -> LinearBinomial<N>
fn div(self, rhs: N) -> LinearBinomial<N>
Performs the
/ operation. Read moreSource§impl<N: DivAssign + Copy> DivAssign<N> for LinearBinomial<N>
impl<N: DivAssign + Copy> DivAssign<N> for LinearBinomial<N>
Source§fn div_assign(&mut self, rhs: N)
fn div_assign(&mut self, rhs: N)
Performs the
/= operation. Read moreSource§impl<N> Evaluable<N> for LinearBinomial<N>
impl<N> Evaluable<N> for LinearBinomial<N>
Source§impl From<LinearBinomial<f32>> for LinearBinomial<f64>
impl From<LinearBinomial<f32>> for LinearBinomial<f64>
Source§fn from(item: LinearBinomial<f32>) -> Self
fn from(item: LinearBinomial<f32>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<i16>> for LinearBinomial<f32>
impl From<LinearBinomial<i16>> for LinearBinomial<f32>
Source§fn from(item: LinearBinomial<i16>) -> Self
fn from(item: LinearBinomial<i16>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<i16>> for LinearBinomial<f64>
impl From<LinearBinomial<i16>> for LinearBinomial<f64>
Source§fn from(item: LinearBinomial<i16>) -> Self
fn from(item: LinearBinomial<i16>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<i16>> for LinearBinomial<i128>
impl From<LinearBinomial<i16>> for LinearBinomial<i128>
Source§fn from(item: LinearBinomial<i16>) -> Self
fn from(item: LinearBinomial<i16>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<i16>> for LinearBinomial<i32>
impl From<LinearBinomial<i16>> for LinearBinomial<i32>
Source§fn from(item: LinearBinomial<i16>) -> Self
fn from(item: LinearBinomial<i16>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<i16>> for LinearBinomial<i64>
impl From<LinearBinomial<i16>> for LinearBinomial<i64>
Source§fn from(item: LinearBinomial<i16>) -> Self
fn from(item: LinearBinomial<i16>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<i32>> for LinearBinomial<f64>
impl From<LinearBinomial<i32>> for LinearBinomial<f64>
Source§fn from(item: LinearBinomial<i32>) -> Self
fn from(item: LinearBinomial<i32>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<i32>> for LinearBinomial<i128>
impl From<LinearBinomial<i32>> for LinearBinomial<i128>
Source§fn from(item: LinearBinomial<i32>) -> Self
fn from(item: LinearBinomial<i32>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<i32>> for LinearBinomial<i64>
impl From<LinearBinomial<i32>> for LinearBinomial<i64>
Source§fn from(item: LinearBinomial<i32>) -> Self
fn from(item: LinearBinomial<i32>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<i64>> for LinearBinomial<i128>
impl From<LinearBinomial<i64>> for LinearBinomial<i128>
Source§fn from(item: LinearBinomial<i64>) -> Self
fn from(item: LinearBinomial<i64>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<i8>> for LinearBinomial<f32>
impl From<LinearBinomial<i8>> for LinearBinomial<f32>
Source§fn from(item: LinearBinomial<i8>) -> Self
fn from(item: LinearBinomial<i8>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<i8>> for LinearBinomial<f64>
impl From<LinearBinomial<i8>> for LinearBinomial<f64>
Source§fn from(item: LinearBinomial<i8>) -> Self
fn from(item: LinearBinomial<i8>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<i8>> for LinearBinomial<i128>
impl From<LinearBinomial<i8>> for LinearBinomial<i128>
Source§fn from(item: LinearBinomial<i8>) -> Self
fn from(item: LinearBinomial<i8>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<i8>> for LinearBinomial<i16>
impl From<LinearBinomial<i8>> for LinearBinomial<i16>
Source§fn from(item: LinearBinomial<i8>) -> Self
fn from(item: LinearBinomial<i8>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<i8>> for LinearBinomial<i32>
impl From<LinearBinomial<i8>> for LinearBinomial<i32>
Source§fn from(item: LinearBinomial<i8>) -> Self
fn from(item: LinearBinomial<i8>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<i8>> for LinearBinomial<i64>
impl From<LinearBinomial<i8>> for LinearBinomial<i64>
Source§fn from(item: LinearBinomial<i8>) -> Self
fn from(item: LinearBinomial<i8>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u16>> for LinearBinomial<f32>
impl From<LinearBinomial<u16>> for LinearBinomial<f32>
Source§fn from(item: LinearBinomial<u16>) -> Self
fn from(item: LinearBinomial<u16>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u16>> for LinearBinomial<f64>
impl From<LinearBinomial<u16>> for LinearBinomial<f64>
Source§fn from(item: LinearBinomial<u16>) -> Self
fn from(item: LinearBinomial<u16>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u16>> for LinearBinomial<i128>
impl From<LinearBinomial<u16>> for LinearBinomial<i128>
Source§fn from(item: LinearBinomial<u16>) -> Self
fn from(item: LinearBinomial<u16>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u16>> for LinearBinomial<i32>
impl From<LinearBinomial<u16>> for LinearBinomial<i32>
Source§fn from(item: LinearBinomial<u16>) -> Self
fn from(item: LinearBinomial<u16>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u16>> for LinearBinomial<i64>
impl From<LinearBinomial<u16>> for LinearBinomial<i64>
Source§fn from(item: LinearBinomial<u16>) -> Self
fn from(item: LinearBinomial<u16>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u16>> for LinearBinomial<u128>
impl From<LinearBinomial<u16>> for LinearBinomial<u128>
Source§fn from(item: LinearBinomial<u16>) -> Self
fn from(item: LinearBinomial<u16>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u16>> for LinearBinomial<u32>
impl From<LinearBinomial<u16>> for LinearBinomial<u32>
Source§fn from(item: LinearBinomial<u16>) -> Self
fn from(item: LinearBinomial<u16>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u16>> for LinearBinomial<u64>
impl From<LinearBinomial<u16>> for LinearBinomial<u64>
Source§fn from(item: LinearBinomial<u16>) -> Self
fn from(item: LinearBinomial<u16>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u32>> for LinearBinomial<f64>
impl From<LinearBinomial<u32>> for LinearBinomial<f64>
Source§fn from(item: LinearBinomial<u32>) -> Self
fn from(item: LinearBinomial<u32>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u32>> for LinearBinomial<i128>
impl From<LinearBinomial<u32>> for LinearBinomial<i128>
Source§fn from(item: LinearBinomial<u32>) -> Self
fn from(item: LinearBinomial<u32>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u32>> for LinearBinomial<i64>
impl From<LinearBinomial<u32>> for LinearBinomial<i64>
Source§fn from(item: LinearBinomial<u32>) -> Self
fn from(item: LinearBinomial<u32>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u32>> for LinearBinomial<u128>
impl From<LinearBinomial<u32>> for LinearBinomial<u128>
Source§fn from(item: LinearBinomial<u32>) -> Self
fn from(item: LinearBinomial<u32>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u32>> for LinearBinomial<u64>
impl From<LinearBinomial<u32>> for LinearBinomial<u64>
Source§fn from(item: LinearBinomial<u32>) -> Self
fn from(item: LinearBinomial<u32>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u64>> for LinearBinomial<i128>
impl From<LinearBinomial<u64>> for LinearBinomial<i128>
Source§fn from(item: LinearBinomial<u64>) -> Self
fn from(item: LinearBinomial<u64>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u64>> for LinearBinomial<u128>
impl From<LinearBinomial<u64>> for LinearBinomial<u128>
Source§fn from(item: LinearBinomial<u64>) -> Self
fn from(item: LinearBinomial<u64>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u8>> for LinearBinomial<f32>
impl From<LinearBinomial<u8>> for LinearBinomial<f32>
Source§fn from(item: LinearBinomial<u8>) -> Self
fn from(item: LinearBinomial<u8>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u8>> for LinearBinomial<f64>
impl From<LinearBinomial<u8>> for LinearBinomial<f64>
Source§fn from(item: LinearBinomial<u8>) -> Self
fn from(item: LinearBinomial<u8>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u8>> for LinearBinomial<i128>
impl From<LinearBinomial<u8>> for LinearBinomial<i128>
Source§fn from(item: LinearBinomial<u8>) -> Self
fn from(item: LinearBinomial<u8>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u8>> for LinearBinomial<i16>
impl From<LinearBinomial<u8>> for LinearBinomial<i16>
Source§fn from(item: LinearBinomial<u8>) -> Self
fn from(item: LinearBinomial<u8>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u8>> for LinearBinomial<i32>
impl From<LinearBinomial<u8>> for LinearBinomial<i32>
Source§fn from(item: LinearBinomial<u8>) -> Self
fn from(item: LinearBinomial<u8>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u8>> for LinearBinomial<i64>
impl From<LinearBinomial<u8>> for LinearBinomial<i64>
Source§fn from(item: LinearBinomial<u8>) -> Self
fn from(item: LinearBinomial<u8>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u8>> for LinearBinomial<u128>
impl From<LinearBinomial<u8>> for LinearBinomial<u128>
Source§fn from(item: LinearBinomial<u8>) -> Self
fn from(item: LinearBinomial<u8>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u8>> for LinearBinomial<u16>
impl From<LinearBinomial<u8>> for LinearBinomial<u16>
Source§fn from(item: LinearBinomial<u8>) -> Self
fn from(item: LinearBinomial<u8>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u8>> for LinearBinomial<u32>
impl From<LinearBinomial<u8>> for LinearBinomial<u32>
Source§fn from(item: LinearBinomial<u8>) -> Self
fn from(item: LinearBinomial<u8>) -> Self
Converts to this type from the input type.
Source§impl From<LinearBinomial<u8>> for LinearBinomial<u64>
impl From<LinearBinomial<u8>> for LinearBinomial<u64>
Source§fn from(item: LinearBinomial<u8>) -> Self
fn from(item: LinearBinomial<u8>) -> Self
Converts to this type from the input type.
Source§impl<N> FromStr for LinearBinomial<N>
impl<N> FromStr for LinearBinomial<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: Mul<Output = N> + Copy> Mul<N> for LinearBinomial<N>
impl<N: Mul<Output = N> + Copy> Mul<N> for LinearBinomial<N>
Source§type Output = LinearBinomial<N>
type Output = LinearBinomial<N>
The resulting type after applying the
* operator.Source§fn mul(self, rhs: N) -> LinearBinomial<N>
fn mul(self, rhs: N) -> LinearBinomial<N>
Performs the
* operation. Read moreSource§impl<N: MulAssign + Copy> MulAssign<N> for LinearBinomial<N>
impl<N: MulAssign + Copy> MulAssign<N> for LinearBinomial<N>
Source§fn mul_assign(&mut self, rhs: N)
fn mul_assign(&mut self, rhs: N)
Performs the
*= operation. Read moreSource§impl<N> MutablePolynomial<N> for LinearBinomial<N>
impl<N> MutablePolynomial<N> for LinearBinomial<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>
Tries to add the term with given coefficient and
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>
Tries to subtract the term with given coefficient and
degree from self, returning
an error if the particular term can not be subtracted from self without violating
constraints. Read moreSource§impl<N: Copy + Neg<Output = N>> Neg for LinearBinomial<N>
impl<N: Copy + Neg<Output = N>> Neg for LinearBinomial<N>
Source§type Output = LinearBinomial<N>
type Output = LinearBinomial<N>
The resulting type after applying the
- operator.Source§fn neg(self) -> LinearBinomial<N>
fn neg(self) -> LinearBinomial<N>
Performs the unary
- operation. Read moreSource§impl<N> PartialEq for LinearBinomial<N>
impl<N> PartialEq for LinearBinomial<N>
Source§impl<N: Zero + Copy> Shr<u32> for LinearBinomial<N>
impl<N: Zero + Copy> Shr<u32> for LinearBinomial<N>
Source§type Output = LinearBinomial<N>
type Output = LinearBinomial<N>
The resulting type after applying the
>> operator.Source§impl<N: Zero + Copy> ShrAssign<u32> for LinearBinomial<N>
impl<N: Zero + Copy> ShrAssign<u32> for LinearBinomial<N>
Source§fn shr_assign(&mut self, rhs: u32)
fn shr_assign(&mut self, rhs: u32)
Performs the
>>= operation. Read moreSource§impl<N: Copy + Zero> SizedPolynomial<N> for LinearBinomial<N>
impl<N: Copy + Zero> SizedPolynomial<N> for LinearBinomial<N>
Source§fn term_with_degree(&self, degree: usize) -> Term<N>
fn term_with_degree(&self, degree: usize) -> Term<N>
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));Source§fn degree(&self) -> Degree
fn degree(&self) -> Degree
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());Source§fn zero() -> Self
fn zero() -> Self
Returns a LinearBinomial with no terms.
§Example
use rustnomial::{SizedPolynomial, LinearBinomial};
let zero = LinearBinomial::<i32>::zero();
assert!(zero.is_zero());
assert!(zero.ordered_term_iter().next().is_none());Source§fn set_to_zero(&mut self)
fn set_to_zero(&mut self)
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());Source§impl<N> Sub for LinearBinomial<N>
impl<N> Sub for LinearBinomial<N>
Source§type Output = LinearBinomial<N>
type Output = LinearBinomial<N>
The resulting type after applying the
- operator.Source§fn sub(self, rhs: LinearBinomial<N>) -> LinearBinomial<N>
fn sub(self, rhs: LinearBinomial<N>) -> LinearBinomial<N>
Performs the
- operation. Read moreSource§impl<N> SubAssign for LinearBinomial<N>
impl<N> SubAssign for LinearBinomial<N>
Source§fn sub_assign(&mut self, rhs: LinearBinomial<N>)
fn sub_assign(&mut self, rhs: LinearBinomial<N>)
Performs the
-= operation. Read moreAuto Trait Implementations§
impl<N> Freeze for LinearBinomial<N>where
N: Freeze,
impl<N> RefUnwindSafe for LinearBinomial<N>where
N: RefUnwindSafe,
impl<N> Send for LinearBinomial<N>where
N: Send,
impl<N> Sync for LinearBinomial<N>where
N: Sync,
impl<N> Unpin for LinearBinomial<N>where
N: Unpin,
impl<N> UnwindSafe for LinearBinomial<N>where
N: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more