pub fn polynomial_div(
dividend: &Expression,
divisor: &Expression,
var: &Symbol,
) -> Result<(Expression, Expression), MathError>Expand description
Polynomial long division
Returns (quotient, remainder) such that:
dividend = divisor * quotient + remainder
and degree(remainder) < degree(divisor)
Uses IntPoly fast-path for univariate integer polynomials (primary path).
§Arguments
dividend- Polynomial to dividedivisor- Polynomial to divide by (must be non-zero)var- Variable to treat as polynomial variable
§Errors
Returns MathError::DivisionByZero if divisor is zero.
Returns MathError::NotImplemented for complex symbolic polynomial division.
§Examples
use mathhook_core::{expr, symbol};
use mathhook_core::algebra::polynomial_division::polynomial_div;
let x = symbol!(x);
// (x^2 + 3x + 2) / (x + 1) = (x + 2) with remainder 0
let dividend = expr!((x^2) + (3*x) + 2);
let divisor = expr!(x + 1);
let (quot, rem) = polynomial_div(÷nd, &divisor, &x)?;§Returns
Returns (quotient, remainder) tuple where both are expressions