pub fn integrate_rational(
numerator: &Expression,
denominator: &Expression,
var: &Symbol,
) -> RationalIntegralExpand description
Integrate a rational function P(x)/Q(x)
Implements Hermite reduction algorithm for complete rational function integration.
§Arguments
numerator- Polynomial P(x)denominator- Polynomial Q(x) (must be non-zero)var- Variable of integration
§Algorithm
- If deg(P) ≥ deg(Q): Perform polynomial long division
- P/Q = quotient + remainder/Q
- Integrate quotient using power rule
- Apply Hermite reduction to remainder/Q:
- Compute D = gcd(Q, Q’) where Q’ is derivative
- Use extended GCD to extract logarithmic terms
- Separate into algebraic + logarithmic parts
- Return complete integral
§Examples
use mathhook_core::calculus::integrals::risch::rational::integrate_rational;
use mathhook_core::{expr, symbol};
let x = symbol!(x);
let num = expr!((x^2) + 1);
let den = expr!(x - 1);
let result = integrate_rational(&num, &den, &x);§Returns
Returns RationalIntegral containing:
polynomial_part: Result of integrating quotientlogarithmic_terms: List of (coefficient, argument) for ln termsremaining: Any unintegrated rational part (None if complete)