polynomial_div

Function polynomial_div 

Source
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 divide
  • divisor - 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(&dividend, &divisor, &x)?;

§Returns

Returns (quotient, remainder) tuple where both are expressions