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