pub struct RationalPolynomial<D: Domain, O: MonomialOrder = Grevlex> {
pub numerator: SparseMultivariatePolynomial<D, O>,
pub denominator: SparseMultivariatePolynomial<D, O>,
}Expand description
A rational polynomial $\frac{\text{num}}{\text{den}}$ over a domain D.
After construction via from_num_den, the fraction
is always in canonical form:
- numerator and denominator are coprime,
- the denominator’s leading coefficient is positive (for ordered domains) or equal to 1 (for finite fields).
Fields§
§numerator: SparseMultivariatePolynomial<D, O>The numerator polynomial.
denominator: SparseMultivariatePolynomial<D, O>The denominator polynomial (always non-zero).
Implementations§
Source§impl<D: Domain, O: MonomialOrder> RationalPolynomial<D, O>
impl<D: Domain, O: MonomialOrder> RationalPolynomial<D, O>
Sourcepub fn new(
numerator: SparseMultivariatePolynomial<D, O>,
denominator: SparseMultivariatePolynomial<D, O>,
) -> Self
pub fn new( numerator: SparseMultivariatePolynomial<D, O>, denominator: SparseMultivariatePolynomial<D, O>, ) -> Self
Create a rational polynomial without reduction.
The caller must ensure denominator is non-zero. For a canonicalized
version use from_num_den.
Sourcepub fn from_polynomial(poly: SparseMultivariatePolynomial<D, O>) -> Self
pub fn from_polynomial(poly: SparseMultivariatePolynomial<D, O>) -> Self
Create a rational polynomial from a polynomial (denominator = 1).
Sourcepub fn zero(domain: &D, n_vars: usize) -> Self
pub fn zero(domain: &D, n_vars: usize) -> Self
Return the zero rational polynomial in n_vars variables.
Sourcepub fn one(domain: &D, n_vars: usize) -> Self
pub fn one(domain: &D, n_vars: usize) -> Self
Return the unit rational polynomial (1/1) in n_vars variables.
Source§impl<D: EuclideanDomain, O: MonomialOrder> RationalPolynomial<D, O>
impl<D: EuclideanDomain, O: MonomialOrder> RationalPolynomial<D, O>
Sourcepub fn from_num_den(
numerator: SparseMultivariatePolynomial<D, O>,
denominator: SparseMultivariatePolynomial<D, O>,
) -> Self
pub fn from_num_den( numerator: SparseMultivariatePolynomial<D, O>, denominator: SparseMultivariatePolynomial<D, O>, ) -> Self
Create a canonicalized rational polynomial from numerator and denominator.
The result has coprime numerator and denominator, with the denominator’s leading coefficient normalized.
Sourcepub fn add(&self, other: &Self) -> Self
pub fn add(&self, other: &Self) -> Self
Add two rational polynomials: $\frac{a}{b} + \frac{c}{d}$.
Uses the denominator-GCD strategy to minimize intermediate growth.
Trait Implementations§
Source§impl<D: Clone + Domain, O: Clone + MonomialOrder> Clone for RationalPolynomial<D, O>
impl<D: Clone + Domain, O: Clone + MonomialOrder> Clone for RationalPolynomial<D, O>
Source§fn clone(&self) -> RationalPolynomial<D, O>
fn clone(&self) -> RationalPolynomial<D, O>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<D: Debug + Domain, O: Debug + MonomialOrder> Debug for RationalPolynomial<D, O>
impl<D: Debug + Domain, O: Debug + MonomialOrder> Debug for RationalPolynomial<D, O>
Source§impl<D: Domain, O: MonomialOrder> Display for RationalPolynomial<D, O>
impl<D: Domain, O: MonomialOrder> Display for RationalPolynomial<D, O>
impl<D: Eq + Domain, O: Eq + MonomialOrder> Eq for RationalPolynomial<D, O>
Source§impl<D: PartialEq + Domain, O: PartialEq + MonomialOrder> PartialEq for RationalPolynomial<D, O>
impl<D: PartialEq + Domain, O: PartialEq + MonomialOrder> PartialEq for RationalPolynomial<D, O>
impl<D: PartialEq + Domain, O: PartialEq + MonomialOrder> StructuralPartialEq for RationalPolynomial<D, O>
Auto Trait Implementations§
impl<D, O> Freeze for RationalPolynomial<D, O>
impl<D, O> RefUnwindSafe for RationalPolynomial<D, O>
impl<D, O> Send for RationalPolynomial<D, O>
impl<D, O> Sync for RationalPolynomial<D, O>
impl<D, O> Unpin for RationalPolynomial<D, O>
impl<D, O> UnsafeUnpin for RationalPolynomial<D, O>where
D: UnsafeUnpin,
O: UnsafeUnpin,
impl<D, O> UnwindSafe for RationalPolynomial<D, O>
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more