QuadraticTrinomial

Struct QuadraticTrinomial 

Source
pub struct QuadraticTrinomial<N> {
    pub coefficients: [N; 3],
}
Expand description

A type that stores terms of a quadratic trinomial 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; 3]

Implementations§

Source§

impl<N: Sized> QuadraticTrinomial<N>

Source

pub fn new(coefficients: [N; 3]) -> QuadraticTrinomial<N>

Create a QuadraticTrinomial with the given coefficients.

§Example
use rustnomial::{SizedPolynomial, QuadraticTrinomial, Degree};
let trinomial = QuadraticTrinomial::new([3.0, 1.0, 0.5]);
assert_eq!([3.0, 1.0, 0.5], trinomial.coefficients);
assert_eq!(Degree::Num(2), trinomial.degree());
Source§

impl<N: Zero + Copy> QuadraticTrinomial<N>

Source

pub fn ordered_term_iter(&self) -> impl Iterator<Item = (N, usize)> + '_

Source§

impl<N> QuadraticTrinomial<N>
where N: Copy + Zero + Mul<Output = N> + Neg<Output = N> + Sub<Output = N> + From<u8> + Div<Output = N> + AbsSqrt + IsPositive + One,

Source

pub fn discriminant(&self) -> N

Source

pub fn roots(&self) -> Roots<N>

Return the roots of QuadraticTrinomial with largest first, smallest second.

Source

pub fn complex_factors( &self, ) -> (N, LinearBinomial<Complex<N>>, LinearBinomial<Complex<N>>)

Source

pub fn real_factors(&self) -> Option<(N, LinearBinomial<N>, LinearBinomial<N>)>

Trait Implementations§

Source§

impl<N> Add for QuadraticTrinomial<N>
where N: Add<Output = N> + Copy,

Source§

type Output = QuadraticTrinomial<N>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: QuadraticTrinomial<N>) -> QuadraticTrinomial<N>

Performs the + operation. Read more
Source§

impl<N: Copy + AddAssign> AddAssign for QuadraticTrinomial<N>

Source§

fn add_assign(&mut self, rhs: QuadraticTrinomial<N>)

Performs the += operation. Read more
Source§

impl<N: Clone> Clone for QuadraticTrinomial<N>

Source§

fn clone(&self) -> QuadraticTrinomial<N>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<N: Debug> Debug for QuadraticTrinomial<N>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<N> Derivable<N> for QuadraticTrinomial<N>
where N: Zero + One + Copy + Mul<Output = N> + TryFromUsizeExact,

Source§

fn derivative(&self) -> QuadraticTrinomial<N>

Returns the derivative of the QuadraticTrinomial.

§Example
use rustnomial::{QuadraticTrinomial, Derivable};
let binomial = QuadraticTrinomial::new([3.0, 2.0, 1.0]);
assert_eq!(QuadraticTrinomial::new([0.0, 6.0, 2.0]), binomial.derivative());
Source§

impl<N> Display for QuadraticTrinomial<N>
where N: Zero + One + IsPositive + PartialEq + Abs + Copy + IsNegativeOne + Display,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<N: Div<Output = N> + Copy> Div<N> for QuadraticTrinomial<N>

Source§

type Output = QuadraticTrinomial<N>

The resulting type after applying the / operator.
Source§

fn div(self, rhs: N) -> QuadraticTrinomial<N>

Performs the / operation. Read more
Source§

impl<N: DivAssign + Copy> DivAssign<N> for QuadraticTrinomial<N>

Source§

fn div_assign(&mut self, rhs: N)

Performs the /= operation. Read more
Source§

impl<N> Evaluable<N> for QuadraticTrinomial<N>
where N: Add<Output = N> + Mul<Output = N> + Copy,

Source§

fn eval(&self, point: N) -> N

Returns the value of the QuadraticTrinomial at the given point.

§Example
use rustnomial::{QuadraticTrinomial, Evaluable};
let trinomial = QuadraticTrinomial::new([1, 2, 3]);
assert_eq!(6, trinomial.eval(1));
assert_eq!(3, trinomial.eval(0));
Source§

impl From<QuadraticTrinomial<f32>> for QuadraticTrinomial<f64>

Source§

fn from(item: QuadraticTrinomial<f32>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<i16>> for QuadraticTrinomial<f32>

Source§

fn from(item: QuadraticTrinomial<i16>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<i16>> for QuadraticTrinomial<f64>

Source§

fn from(item: QuadraticTrinomial<i16>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<i16>> for QuadraticTrinomial<i128>

Source§

fn from(item: QuadraticTrinomial<i16>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<i16>> for QuadraticTrinomial<i32>

Source§

fn from(item: QuadraticTrinomial<i16>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<i16>> for QuadraticTrinomial<i64>

Source§

fn from(item: QuadraticTrinomial<i16>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<i32>> for QuadraticTrinomial<f64>

Source§

fn from(item: QuadraticTrinomial<i32>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<i32>> for QuadraticTrinomial<i128>

Source§

fn from(item: QuadraticTrinomial<i32>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<i32>> for QuadraticTrinomial<i64>

Source§

fn from(item: QuadraticTrinomial<i32>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<i64>> for QuadraticTrinomial<i128>

Source§

fn from(item: QuadraticTrinomial<i64>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<i8>> for QuadraticTrinomial<f32>

Source§

fn from(item: QuadraticTrinomial<i8>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<i8>> for QuadraticTrinomial<f64>

Source§

fn from(item: QuadraticTrinomial<i8>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<i8>> for QuadraticTrinomial<i128>

Source§

fn from(item: QuadraticTrinomial<i8>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<i8>> for QuadraticTrinomial<i16>

Source§

fn from(item: QuadraticTrinomial<i8>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<i8>> for QuadraticTrinomial<i32>

Source§

fn from(item: QuadraticTrinomial<i8>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<i8>> for QuadraticTrinomial<i64>

Source§

fn from(item: QuadraticTrinomial<i8>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u16>> for QuadraticTrinomial<f32>

Source§

fn from(item: QuadraticTrinomial<u16>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u16>> for QuadraticTrinomial<f64>

Source§

fn from(item: QuadraticTrinomial<u16>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u16>> for QuadraticTrinomial<i128>

Source§

fn from(item: QuadraticTrinomial<u16>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u16>> for QuadraticTrinomial<i32>

Source§

fn from(item: QuadraticTrinomial<u16>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u16>> for QuadraticTrinomial<i64>

Source§

fn from(item: QuadraticTrinomial<u16>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u16>> for QuadraticTrinomial<u128>

Source§

fn from(item: QuadraticTrinomial<u16>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u16>> for QuadraticTrinomial<u32>

Source§

fn from(item: QuadraticTrinomial<u16>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u16>> for QuadraticTrinomial<u64>

Source§

fn from(item: QuadraticTrinomial<u16>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u32>> for QuadraticTrinomial<f64>

Source§

fn from(item: QuadraticTrinomial<u32>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u32>> for QuadraticTrinomial<i128>

Source§

fn from(item: QuadraticTrinomial<u32>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u32>> for QuadraticTrinomial<i64>

Source§

fn from(item: QuadraticTrinomial<u32>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u32>> for QuadraticTrinomial<u128>

Source§

fn from(item: QuadraticTrinomial<u32>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u32>> for QuadraticTrinomial<u64>

Source§

fn from(item: QuadraticTrinomial<u32>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u64>> for QuadraticTrinomial<i128>

Source§

fn from(item: QuadraticTrinomial<u64>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u64>> for QuadraticTrinomial<u128>

Source§

fn from(item: QuadraticTrinomial<u64>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u8>> for QuadraticTrinomial<f32>

Source§

fn from(item: QuadraticTrinomial<u8>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u8>> for QuadraticTrinomial<f64>

Source§

fn from(item: QuadraticTrinomial<u8>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u8>> for QuadraticTrinomial<i128>

Source§

fn from(item: QuadraticTrinomial<u8>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u8>> for QuadraticTrinomial<i16>

Source§

fn from(item: QuadraticTrinomial<u8>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u8>> for QuadraticTrinomial<i32>

Source§

fn from(item: QuadraticTrinomial<u8>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u8>> for QuadraticTrinomial<i64>

Source§

fn from(item: QuadraticTrinomial<u8>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u8>> for QuadraticTrinomial<u128>

Source§

fn from(item: QuadraticTrinomial<u8>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u8>> for QuadraticTrinomial<u16>

Source§

fn from(item: QuadraticTrinomial<u8>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u8>> for QuadraticTrinomial<u32>

Source§

fn from(item: QuadraticTrinomial<u8>) -> Self

Converts to this type from the input type.
Source§

impl From<QuadraticTrinomial<u8>> for QuadraticTrinomial<u64>

Source§

fn from(item: QuadraticTrinomial<u8>) -> Self

Converts to this type from the input type.
Source§

impl<N> FromStr for QuadraticTrinomial<N>
where N: Zero + One + Copy + SubAssign + AddAssign + FromStr + CanNegate,

Source§

type Err = PolynomialFromStringError

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
Source§

impl<N> Integrable<N, Polynomial<N>> for QuadraticTrinomial<N>
where N: Zero + TryFromUsizeExact + Copy + DivAssign + Mul<Output = N> + MulAssign + AddAssign + Div<Output = N>,

Source§

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<Output = N> + Copy> Mul<N> for QuadraticTrinomial<N>

Source§

type Output = QuadraticTrinomial<N>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: N) -> QuadraticTrinomial<N>

Performs the * operation. Read more
Source§

impl<N: MulAssign + Copy> MulAssign<N> for QuadraticTrinomial<N>

Source§

fn mul_assign(&mut self, rhs: N)

Performs the *= operation. Read more
Source§

impl<N> MutablePolynomial<N> for QuadraticTrinomial<N>
where N: Zero + SubAssign + AddAssign + Copy,

Source§

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 more
Source§

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 more
Source§

impl<N: Copy + Neg<Output = N>> Neg for QuadraticTrinomial<N>

Source§

type Output = QuadraticTrinomial<N>

The resulting type after applying the - operator.
Source§

fn neg(self) -> QuadraticTrinomial<N>

Performs the unary - operation. Read more
Source§

impl<N> PartialEq for QuadraticTrinomial<N>
where N: Zero + PartialEq + Copy,

Source§

fn eq(&self, other: &Self) -> bool

Returns true if this QuadraticTrinomial is equal to other.

1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<N: Zero + Copy> Shr<u32> for QuadraticTrinomial<N>

Source§

type Output = QuadraticTrinomial<N>

The resulting type after applying the >> operator.
Source§

fn shr(self, rhs: u32) -> QuadraticTrinomial<N>

Performs the >> operation. Read more
Source§

impl<N: Zero + Copy> ShrAssign<u32> for QuadraticTrinomial<N>

Source§

fn shr_assign(&mut self, rhs: u32)

Performs the >>= operation. Read more
Source§

impl<N: Copy + Zero> SizedPolynomial<N> for QuadraticTrinomial<N>

Source§

fn term_with_degree(&self, degree: usize) -> Term<N>

Returns the term with the given degree of the QuadraticTrinomial.

§Example
use rustnomial::{QuadraticTrinomial, SizedPolynomial, Term};
let trinomial = QuadraticTrinomial::new([1, 0, 3]);
assert_eq!(Term::Term(1, 2), trinomial.term_with_degree(2));
assert_eq!(Term::ZeroTerm, trinomial.term_with_degree(1));
assert_eq!(Term::Term(3, 0), trinomial.term_with_degree(0));
Source§

fn degree(&self) -> Degree

Returns the degree of the QuadraticTrinomial.

§Example
use rustnomial::{SizedPolynomial, QuadraticTrinomial, Degree};
let trinomial = QuadraticTrinomial::new([1, 2, 3]);
assert_eq!(Degree::Num(2), trinomial.degree());
let binomial = QuadraticTrinomial::new([0, 2, 3]);
assert_eq!(Degree::Num(1), binomial.degree());
let monomial = QuadraticTrinomial::new([0, 0, 3]);
assert_eq!(Degree::Num(0), monomial.degree());
let zero = QuadraticTrinomial::new([0, 0, 0]);
assert_eq!(Degree::NegInf, zero.degree());
Source§

fn zero() -> Self

Return a QuadraticTrinomial which is equal to zero.

§Example
use rustnomial::{QuadraticTrinomial, SizedPolynomial};
assert!(QuadraticTrinomial::<i32>::zero().is_zero());
Source§

fn set_to_zero(&mut self)

Sets self to zero.

§Example
use rustnomial::{QuadraticTrinomial, SizedPolynomial};
let mut non_zero = QuadraticTrinomial::new([1, 1, 1]);
assert!(!non_zero.is_zero());
non_zero.set_to_zero();
assert!(non_zero.is_zero());
Source§

fn terms_as_vec(&self) -> Vec<(N, usize)>

Returns a Vec containing all of the terms of self, where each item is the coefficient and degree of each non-zero term, in order of descending degree. Read more
Source§

fn is_zero(&self) -> bool

Returns true if all terms of self are zero, and false if a non-zero term exists. Read more
Source§

impl<N> Sub for QuadraticTrinomial<N>
where N: Copy + Sub<Output = N>,

Source§

type Output = QuadraticTrinomial<N>

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: QuadraticTrinomial<N>) -> QuadraticTrinomial<N>

Performs the - operation. Read more
Source§

impl<N> SubAssign for QuadraticTrinomial<N>
where N: SubAssign + Copy,

Source§

fn sub_assign(&mut self, rhs: QuadraticTrinomial<N>)

Performs the -= operation. Read more

Auto Trait Implementations§

§

impl<N> Freeze for QuadraticTrinomial<N>
where N: Freeze,

§

impl<N> RefUnwindSafe for QuadraticTrinomial<N>
where N: RefUnwindSafe,

§

impl<N> Send for QuadraticTrinomial<N>
where N: Send,

§

impl<N> Sync for QuadraticTrinomial<N>
where N: Sync,

§

impl<N> Unpin for QuadraticTrinomial<N>
where N: Unpin,

§

impl<N> UnwindSafe for QuadraticTrinomial<N>
where N: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.