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>
Source§fn eq(&self, other: &RationalPolynomial<D, O>) -> bool
fn eq(&self, other: &RationalPolynomial<D, O>) -> bool
self and other values to be equal, and is used by ==.