pub struct Polynomial<T> { /* private fields */ }
Expand description
Polynomial representation
Implementations§
Source§impl<T: MonomialValue> Polynomial<T>
impl<T: MonomialValue> Polynomial<T>
Sourcepub fn new(mono_vec: Vec<Monomial<T>>) -> Polynomial<T>
pub fn new(mono_vec: Vec<Monomial<T>>) -> Polynomial<T>
Constructs a new Polynomial<T>
§Examples
let mono_vec: Vec<Monomial<i32>> = vec![
Monomial::new(2, 2),
Monomial::new(-1, 1),
Monomial::new(10, 0),
];
let poly: Polynomial<i32> = Polynomial::new(mono_vec);
Sourcepub fn max_exp(&self) -> Monomial<T>
pub fn max_exp(&self) -> Monomial<T>
Returns the monomial with the max exponent
§Examples
let poly: Polynomial<i32> = Polynomial::try_from("x^2 - 5x - 100").unwrap();
assert_eq!(poly.max_exp().get_exp(), 2);
Sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Returns the number of Monomials in the Polynomial, also referred to as its ‘length’
§Examples
let poly: Polynomial<i32> = Polynomial::default();
assert_eq!(poly.len(), 0);
Sourcepub fn equation_type(&self) -> EquationType
pub fn equation_type(&self) -> EquationType
Returns the equation type
§Examples
let poly: Polynomial<i32> = Polynomial::try_from("5x - 100").unwrap();
assert_eq!(poly.equation_type(), EquationType::Linear);
Sourcepub fn push(&mut self, mono: Monomial<T>)
pub fn push(&mut self, mono: Monomial<T>)
Add a monomial
§Examples
let mut poly: Polynomial<i32> = Polynomial::try_from("5x - 100").unwrap();
let mono: Monomial<i32> = Monomial::try_from("2x^2").unwrap();
poly.push(mono);
assert_eq!(format!("{poly}"), "2x^2 + 5x - 100");
Sourcepub fn find_by_exp(&self, exp: i32) -> Monomial<T>
pub fn find_by_exp(&self, exp: i32) -> Monomial<T>
Find monomial in a polynomial by the exponent if don’t find the monomial returns
Monomial::default()
§Examples
let poly: Polynomial<i32> = Polynomial::try_from("2x^2 + 5x - 100").unwrap();
assert_eq!(poly.find_by_exp(1), Monomial::new(5, 1));
assert_eq!(poly.find_by_exp(10), Monomial::default());
Sourcepub fn div_mono(self, rhs: Monomial<T>) -> Self
pub fn div_mono(self, rhs: Monomial<T>) -> Self
Returns a new polynomial as result of dividing a monomial
§Examples
let poly: Polynomial<i32> = Polynomial::try_from("10x - 10").unwrap();
let mono: Monomial<i32> = Monomial::try_from("2").unwrap();
let result = poly.div_mono(mono);
assert_eq!(format!("{result}"), "5x - 5");
Sourcepub fn mul_mono(self, rhs: Monomial<T>) -> Self
pub fn mul_mono(self, rhs: Monomial<T>) -> Self
Returns a new polynomial as result of multiplying a monomial
§Examples
let poly: Polynomial<i32> = Polynomial::try_from("10x - 10").unwrap();
let mono: Monomial<i32> = Monomial::try_from("2").unwrap();
let result = poly.mul_mono(mono);
assert_eq!(format!("{result}"), "20x - 20");
Trait Implementations§
Source§impl<T: MonomialValue> Add for Polynomial<T>
impl<T: MonomialValue> Add for Polynomial<T>
Source§impl<T: Clone> Clone for Polynomial<T>
impl<T: Clone> Clone for Polynomial<T>
Source§fn clone(&self) -> Polynomial<T>
fn clone(&self) -> Polynomial<T>
Returns a copy 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<T: Debug> Debug for Polynomial<T>
impl<T: Debug> Debug for Polynomial<T>
Source§impl<T: MonomialValue> Default for Polynomial<T>
impl<T: MonomialValue> Default for Polynomial<T>
Source§impl<T: MonomialValue> Display for Polynomial<T>
impl<T: MonomialValue> Display for Polynomial<T>
Source§impl<T: MonomialValue> Div for Polynomial<T>
impl<T: MonomialValue> Div for Polynomial<T>
Source§type Output = (Polynomial<T>, Polynomial<T>)
type Output = (Polynomial<T>, Polynomial<T>)
The resulting type after applying the
/
operator.Source§impl<T: MonomialValue> From<Vec<Monomial<T>>> for Polynomial<T>
impl<T: MonomialValue> From<Vec<Monomial<T>>> for Polynomial<T>
Source§impl<T: MonomialValue> Index<usize> for Polynomial<T>
impl<T: MonomialValue> Index<usize> for Polynomial<T>
Source§impl<'a, T: MonomialValue> IntoIterator for &'a Polynomial<T>
impl<'a, T: MonomialValue> IntoIterator for &'a Polynomial<T>
Source§impl<T: MonomialValue> IntoIterator for Polynomial<T>
impl<T: MonomialValue> IntoIterator for Polynomial<T>
Source§impl<T: MonomialValue> Mul for Polynomial<T>
impl<T: MonomialValue> Mul for Polynomial<T>
Source§impl<T: MonomialValue> Neg for Polynomial<T>
impl<T: MonomialValue> Neg for Polynomial<T>
Source§impl<T: PartialEq> PartialEq for Polynomial<T>
impl<T: PartialEq> PartialEq for Polynomial<T>
Source§impl<T: MonomialValue> TryFrom<&str> for Polynomial<T>
impl<T: MonomialValue> TryFrom<&str> for Polynomial<T>
Source§impl<T: MonomialValue> TryFrom<Vec<T>> for Polynomial<T>
impl<T: MonomialValue> TryFrom<Vec<T>> for Polynomial<T>
impl<T> StructuralPartialEq for Polynomial<T>
Auto Trait Implementations§
impl<T> Freeze for Polynomial<T>
impl<T> RefUnwindSafe for Polynomial<T>where
T: RefUnwindSafe,
impl<T> Send for Polynomial<T>where
T: Send,
impl<T> Sync for Polynomial<T>where
T: Sync,
impl<T> Unpin for Polynomial<T>where
T: Unpin,
impl<T> UnwindSafe for Polynomial<T>where
T: 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