Skip to main content

Crate oxieml

Crate oxieml 

Source
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

  1. Symbolic Regression: Discover closed-form formulas from data via gradient-based search over EML tree topologies.
  2. 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::SharedFormula;
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 LoweredOp expression 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 LoweredOp trees.
lower_grad
Symbolic differentiation for the lowered IR.
lower_interval
Interval arithmetic for over-approximate evaluation of LoweredOp trees.
lower_simplify
Algebraic simplification for the lowered IR.
lower_units
Dimensional analysis extension for LoweredOp.
named_const
Named mathematical constants for the LoweredOp IR.
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 LoweredOp expressions.
simplify
EML tree simplification and normalization.
solve
Symbolic equation solving for LoweredOp expression 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.