[][src]Struct rustnomial::Monomial

pub struct Monomial<N> {
    pub coefficient: N,
    pub deg: usize,
}

Fields

coefficient: Ndeg: usize

Implementations

impl<N> Monomial<N>[src]

pub fn new(coefficient: N, degree: usize) -> Monomial<N>[src]

Create a Monomial with coefficient and degree.

Example

use rustnomial::{Monomial, Degree, SizedPolynomial};
let monomial = Monomial::new(3.0, 2);
assert_eq!(3.0, monomial.coefficient);
assert_eq!(Degree::Num(2), monomial.degree());

impl<N: Copy + Zero> Monomial<N>[src]

pub fn root(&self) -> Roots<N>[src]

Return the root of Monomial.

Example

use rustnomial::{Monomial, Roots, SizedPolynomial};
let monomial = Monomial::new(1, 2);
assert_eq!(Roots::OneRealRoot(0), monomial.root());
let zero = Monomial::<i32>::zero();
assert_eq!(Roots::InfiniteRoots, zero.root());
let constant = Monomial::new(1, 0);
assert_eq!(Roots::NoRoots, constant.root());

impl<N: PowUsize + Copy> Monomial<N>[src]

pub fn pow(&self, exp: usize) -> Monomial<N>[src]

Raises the Monomial to the power of exp.

Example

use rustnomial::Monomial;
let monomial = Monomial::new(2, 1);
let monomial_sqr = monomial.pow(2);
let monomial_cub = monomial.pow(3);
assert_eq!(monomial.clone() * monomial.clone(), monomial_sqr);
assert_eq!(monomial_sqr.clone() * monomial.clone(), monomial_cub);

Trait Implementations

impl<N: Clone> Clone for Monomial<N>[src]

impl<N: Debug> Debug for Monomial<N>[src]

impl<N> Derivable<N> for Monomial<N> where
    N: Zero + Copy + Mul<Output = N> + TryFromUsizeExact, 
[src]

pub fn derivative(&self) -> Monomial<N>[src]

Returns the derivative of the Monomial.

Example

use rustnomial::{Monomial, Derivable};
let monomial = Monomial::new(3.0, 2);
assert_eq!(Monomial::new(6.0, 1), monomial.derivative());

Errors

Will panic if N can not losslessly represent the degree of self.

impl<N> Display for Monomial<N> where
    N: Zero + One + PartialEq + Copy + IsNegativeOne + Display
[src]

impl<N: Div<Output = N>> Div<N> for Monomial<N>[src]

type Output = Monomial<N>

The resulting type after applying the / operator.

impl<N: DivAssign> DivAssign<N> for Monomial<N>[src]

impl<N> Evaluable<N> for Monomial<N> where
    N: PowUsize + Mul<Output = N> + Copy
[src]

pub fn eval(&self, point: N) -> N[src]

Returns the value of the Monomial at the given point.

Example

use rustnomial::{Monomial, Evaluable};
let monomial = Monomial::new(5, 2);
assert_eq!(125, monomial.eval(5));
assert_eq!(1, Monomial::new(1, 0).eval(0));

impl From<Monomial<f32>> for Monomial<f64>[src]

impl From<Monomial<i16>> for Monomial<i32>[src]

impl From<Monomial<i16>> for Monomial<i64>[src]

impl From<Monomial<i16>> for Monomial<i128>[src]

impl From<Monomial<i16>> for Monomial<f32>[src]

impl From<Monomial<i16>> for Monomial<f64>[src]

impl From<Monomial<i32>> for Monomial<i64>[src]

impl From<Monomial<i32>> for Monomial<i128>[src]

impl From<Monomial<i32>> for Monomial<f64>[src]

impl From<Monomial<i64>> for Monomial<i128>[src]

impl From<Monomial<i8>> for Monomial<i16>[src]

impl From<Monomial<i8>> for Monomial<i32>[src]

impl From<Monomial<i8>> for Monomial<i64>[src]

impl From<Monomial<i8>> for Monomial<i128>[src]

impl From<Monomial<i8>> for Monomial<f32>[src]

impl From<Monomial<i8>> for Monomial<f64>[src]

impl From<Monomial<u16>> for Monomial<u32>[src]

impl From<Monomial<u16>> for Monomial<u64>[src]

impl From<Monomial<u16>> for Monomial<u128>[src]

impl From<Monomial<u16>> for Monomial<i32>[src]

impl From<Monomial<u16>> for Monomial<i64>[src]

impl From<Monomial<u16>> for Monomial<i128>[src]

impl From<Monomial<u16>> for Monomial<f32>[src]

impl From<Monomial<u16>> for Monomial<f64>[src]

impl From<Monomial<u32>> for Monomial<u64>[src]

impl From<Monomial<u32>> for Monomial<u128>[src]

impl From<Monomial<u32>> for Monomial<i64>[src]

impl From<Monomial<u32>> for Monomial<i128>[src]

impl From<Monomial<u32>> for Monomial<f64>[src]

impl From<Monomial<u64>> for Monomial<u128>[src]

impl From<Monomial<u64>> for Monomial<i128>[src]

impl From<Monomial<u8>> for Monomial<u16>[src]

impl From<Monomial<u8>> for Monomial<u32>[src]

impl From<Monomial<u8>> for Monomial<u64>[src]

impl From<Monomial<u8>> for Monomial<u128>[src]

impl From<Monomial<u8>> for Monomial<i16>[src]

impl From<Monomial<u8>> for Monomial<i32>[src]

impl From<Monomial<u8>> for Monomial<i64>[src]

impl From<Monomial<u8>> for Monomial<i128>[src]

impl From<Monomial<u8>> for Monomial<f32>[src]

impl From<Monomial<u8>> for Monomial<f64>[src]

impl<N> From<N> for Monomial<N>[src]

impl<N> FromStr for Monomial<N> where
    N: Zero + One + Copy + SubAssign + AddAssign + FromStr + CanNegate, 
[src]

type Err = PolynomialFromStringError

The associated error which can be returned from parsing.

impl<N> Integrable<N, SparsePolynomial<N>> for Monomial<N> where
    N: Zero + Copy + Mul<Output = N> + AddAssign + PowUsize + Div<Output = N> + TryFromUsizeExact, 
[src]

pub fn integral(&self) -> Integral<N, SparsePolynomial<N>>[src]

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.));

impl<N: Copy + Mul<Output = N>> Mul<&'_ Monomial<N>> for Monomial<N>[src]

type Output = Monomial<N>

The resulting type after applying the * operator.

impl<N: Copy + Mul<Output = N>> Mul<Monomial<N>> for Monomial<N>[src]

type Output = Monomial<N>

The resulting type after applying the * operator.

impl<N: Mul<Output = N>> Mul<N> for Monomial<N>[src]

type Output = Monomial<N>

The resulting type after applying the * operator.

impl<N> MulAssign<&'_ Monomial<N>> for Monomial<N> where
    N: MulAssign + AddAssign + Copy
[src]

impl<N: MulAssign> MulAssign<Monomial<N>> for Monomial<N>[src]

impl<N: MulAssign> MulAssign<N> for Monomial<N>[src]

impl<N> MutablePolynomial<N> for Monomial<N> where
    N: SubAssign + AddAssign + Copy + Zero
[src]

impl<N: Copy + Neg<Output = N>> Neg for Monomial<N>[src]

type Output = Monomial<N>

The resulting type after applying the - operator.

impl<N> PartialEq<Monomial<N>> for Monomial<N> where
    N: Zero + PartialEq + Copy
[src]

pub fn eq(&self, other: &Self) -> bool[src]

Returns true if this Monomial is equal to other.

Example

use rustnomial::Monomial;
let a = Monomial::new(2, 2);
let b = Monomial::new(2, 2);
let c = Monomial::new(1, 2);
assert_eq!(a, b);
assert_ne!(a, c);

impl<N: Zero + Copy> Shl<i32> for Monomial<N>[src]

type Output = Monomial<N>

The resulting type after applying the << operator.

impl<N: Zero + Copy> ShlAssign<i32> for Monomial<N>[src]

impl<N: Zero + Copy> Shr<i32> for Monomial<N>[src]

type Output = Monomial<N>

The resulting type after applying the >> operator.

impl<N: Zero + Copy> ShrAssign<i32> for Monomial<N>[src]

impl<N: Copy + Zero> SizedPolynomial<N> for Monomial<N>[src]

pub fn len(&self) -> usize[src]

Return the number of terms in Monomial.

Example

use rustnomial::{Monomial, SizedPolynomial};
let monomial = Monomial::new(3.0, 2);
assert_eq!(1, monomial.len());
assert_eq!(0, Monomial::<i32>::zero().len());

pub fn term_with_degree(&self, degree: usize) -> Term<N>[src]

Returns the term with the given degree of the Monomial.

Example

use rustnomial::{Monomial, SizedPolynomial, Term};
let monomial = Monomial::new(5, 2);
assert_eq!(Term::Term(5, 2), monomial.term_with_degree(2));
assert_eq!(Term::ZeroTerm, monomial.term_with_degree(1));

pub fn degree(&self) -> Degree[src]

Returns the degree of the Monomial.

Example

use rustnomial::{SizedPolynomial, Monomial, Degree};
let monomial = Monomial::new(3.0, 2);
assert_eq!(Degree::Num(2), monomial.degree());
let zero_with_nonzero_deg = Monomial::new(0.0, 2);
assert_eq!(Degree::NegInf, zero_with_nonzero_deg.degree());
let nonzero_with_zero_degree = Monomial::new(1.0, 0);
assert_eq!(Degree::Num(0), nonzero_with_zero_degree.degree());

pub fn zero() -> Self[src]

Return a Monomial which is equal to zero.

Example

use rustnomial::{SizedPolynomial, Monomial};
assert!(Monomial::<i32>::zero().is_zero());

pub fn set_to_zero(&mut self)[src]

Sets self to zero.

Example

use rustnomial::{SizedPolynomial, Monomial};
let mut non_zero = Monomial::new(1, 1);
assert!(!non_zero.is_zero());
non_zero.set_to_zero();
assert!(non_zero.is_zero());

Auto Trait Implementations

impl<N> RefUnwindSafe for Monomial<N> where
    N: RefUnwindSafe
[src]

impl<N> Send for Monomial<N> where
    N: Send
[src]

impl<N> Sync for Monomial<N> where
    N: Sync
[src]

impl<N> Unpin for Monomial<N> where
    N: Unpin
[src]

impl<N> UnwindSafe for Monomial<N> where
    N: UnwindSafe
[src]

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<!> for T[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.