Expand description
OxiEML — All elementary functions from a single binary operator.
This crate implements the EML operator eml(x, y) = exp(x) - ln(y) and
builds uniform binary trees that represent all elementary functions using
only this operator and the constant 1.
Based on the paper: “All elementary functions from a single binary operator” (arXiv:2603.21852).
§Capabilities
- Symbolic Regression: Discover closed-form formulas from data via gradient-based search over EML tree topologies.
- Uniform Tree Representation: Express any elementary function using
the grammar
S → 1 | eml(S, S).
§Example
use oxieml::{EmlTree, Canonical, EvalCtx};
// Build exp(x) = eml(x, 1)
let x = EmlTree::var(0);
let exp_x = Canonical::exp(&x);
// Evaluate at x = 1.0
let ctx = EvalCtx::new(&[1.0]);
let result = exp_x.eval_real(&ctx).unwrap();
assert!((result - std::f64::consts::E).abs() < 1e-10);Re-exports§
pub use canonical::Canonical;pub use error::EmlError;pub use eval::EvalCtx;pub use integrate::IntegrateResult;pub use limit::LimitPoint;pub use limit::LimitResult;pub use lower::LoweredOp;pub use lower_interval::IntervalLO;pub use named_const::NamedConst;pub use numeric::QuadOpts;pub use numeric::RootOpts;pub use numeric::lambert_w0;pub use numeric::lambert_wm1;pub use numeric_verified::RootCertificate;pub use numeric_verified::RootStatus;pub use numeric_verified::VerifiedQuadOpts;pub use ode::OdeForm;pub use ode::OdeKind;pub use ode::OdeSolution;pub use ode::dsolve;pub use parser::ParseError;pub use parser::parse;pub use poly::Factorization;pub use poly::MultiPoly;pub use poly::Poly;pub use poly::PolyError;pub use quadrature_nd::QuadNdMethod;pub use quadrature_nd::QuadNdOpts;pub use quadrature_nd::quadrature_nd;pub use solve::SolveResult;pub use solve::SystemSolveResult;pub use solve::solve_for_all;pub use solve::solve_linear_system;pub use solve_poly::RootsResult;pub use symreg::SymRegLoss;pub use symreg::DiscoveredFormula;pub use symreg::LmConfig;pub use symreg::MultiOutputStrategy;pub use symreg::OptimizerKind;pub use symreg::PdeConfig;pub use symreg::PdeResult;pub use symreg::SelectionCriterion;pub use symreg::SymRegConfig;pub use symreg::SymRegEngine;pub use symreg::SymRegStrategy;pub use symreg::discover_pde;pub use symreg::pareto_front;pub use symreg::LibraryTerm;pub use symreg::SindyConfig;pub use symreg::SindyEquation;pub use symreg::SindyMode;pub use symreg::SindyResult;pub use symreg::discover_ode_sindy;pub use system::SystemOpts;pub use system::solve_system_newton;pub use tree::EmlNode;pub use tree::EmlTree;pub use units::UnitError;pub use units::Units;
Modules§
- autodiff
- Automatic differentiation: forward-mode (JVP) and reverse-mode (VJP).
- canonical
- Canonical EML tree constructions for elementary functions.
- compile
- Compile EML trees to Rust source code.
- error
- Error types for the OxiEML crate.
- eval
- Numerical evaluation of EML trees.
- grad
- Automatic differentiation for EML trees.
- integrate
- Symbolic antidifferentiation and definite integration for
LoweredOp. - limit
- Limit computation for
LoweredOpexpression trees. - linalg
- Pure-Rust dense linear algebra for the LM optimizer and PDE discovery.
- lower
- Lowering EML trees to standard mathematical operations.
- lower_
cse - Common-subexpression elimination (CSE) for
LoweredOptrees. - lower_
grad - Symbolic differentiation for the lowered IR.
- lower_
interval - Interval arithmetic for over-approximate evaluation of
LoweredOptrees. - lower_
simplify - Algebraic simplification for the lowered IR.
- lower_
units - Dimensional analysis extension for
LoweredOp. - named_
const - Named mathematical constants for the
LoweredOpIR. - numeric
- Numeric algorithms: root-finding, quadrature.
- numeric_
verified - Verified interval integration and Krawczyk root-finding.
- ode
- Symbolic ODE solving:
dsolve. - parser
- Parser for EML expression notation.
- poly
- Polynomial algebra over exact rational coefficients.
- quadrature_
nd - Multidimensional numerical quadrature.
- series
- Taylor and Maclaurin series expansion for
LoweredOpexpressions. - simplify
- EML tree simplification and normalization.
- solve
- Symbolic equation solving for
LoweredOpexpression trees. - solve_
poly - Polynomial and Lambert-W equation solving helpers for
crate::solve::solve_for_all. - special
- Special mathematical functions (erf, lgamma, digamma, Ei, Si, Ci). All implementations are pure Rust with no external dependencies.
- symreg
- Symbolic regression engine.
- system
- Multivariate Newton solver for systems of equations.
- tree
- EML tree data structures.
- units
- Dimensional analysis for unit-aware symbolic regression.