pub fn poly_reduce_completely(
poly: &Expression,
basis: &[&Expression],
variables: &[Symbol],
order: &MonomialOrder,
) -> ExpressionExpand description
Reduce a polynomial completely modulo a set of polynomials
Repeatedly applies reduction until no more reduction is possible. Returns the normal form (remainder) of the polynomial.
§Arguments
poly- Polynomial to reducebasis- Set of polynomials to reduce againstvariables- Ordered list of variablesorder- Monomial ordering to use
§Returns
The fully reduced polynomial (normal form)
§Examples
ⓘ
use mathhook_core::{symbol, expr, Expression};
use mathhook_core::algebra::groebner::{poly_reduce_completely, MonomialOrder};
let x = symbol!(x);
let y = symbol!(y);
let poly = Expression::add(vec![expr!(x^2), expr!(x*y), expr!(1)]);
let basis = vec![Expression::add(vec![x.clone().into(), Expression::mul(vec![Expression::integer(-1), y.clone().into()])])];
let basis_refs: Vec<&Expression> = basis.iter().collect();
let reduced = poly_reduce_completely(
&poly,
&basis_refs,
&vec![x, y],
&MonomialOrder::Lex
);