mathhook_core/core/polynomial/algorithms.rs
1//! Polynomial Algorithm Implementations
2//!
3//! This module contains the core polynomial algorithms:
4//! - GCD (pure i64 only)
5//! - Factorization (square-free, pure `Poly<T>`)
6//! - Zippel modular GCD (industrial-strength, pure numeric)
7//!
8//! Expression-based GCD operations MOVED TO ALGEBRA LAYER:
9//! - polynomial_gcd, univariate_gcd → `algebra::gcd`
10//! - resultant, discriminant → `algebra::polynomial_advanced::AdvancedPolynomial`
11//! - content extraction, factor_numeric → `algebra::polynomial_advanced::AdvancedPolynomial`
12
13mod division;
14mod factorization;
15mod gcd;
16mod resultant;
17pub mod zippel_gcd;
18
19// Re-export i64 GCD only
20pub use gcd::integer_gcd;
21
22// Expression-based GCD re-exported from algebra for backward compatibility
23pub use crate::algebra::gcd::{polynomial_gcd, univariate_gcd, univariate_gcd_modular};
24
25// Re-export Zippel modular GCD (low-level access, pure numeric)
26pub use zippel_gcd::modular_gcd_univariate;
27
28// Re-export content extraction functions (pure numeric)
29pub use zippel_gcd::primitive_part;
30
31// Re-export trial division verification
32pub use zippel_gcd::{trial_divide, verify_gcd_candidate, TrialDivisionResult};
33
34// Re-export sparse GCD optimization
35pub use zippel_gcd::{analyze_sparsity, is_sparse, sparse_multiply, SparsityInfo};
36
37// Re-export factorization (pure Poly<T>)
38pub use factorization::square_free_factorization_poly;
39
40// Re-export resultant (backward compatibility - moved to algebra)
41pub use resultant::AdvancedPolynomial;