evalexpr_jit/
lib.rs

1//! JIT-compiled mathematical expression evaluator with automatic differentiation.
2//!
3//! This crate provides JIT compilation and automatic differentiation for mathematical expressions.
4//! It parses expressions using [evalexpr](https://github.com/ISibboI/evalexpr) and compiles them to
5//! native machine code using [Cranelift](https://github.com/bytecodealliance/wasmtime/tree/main/cranelift).
6//!
7//! # Features
8//!
9//! - Fast evaluation through JIT compilation to native code
10//! - Automatic differentiation for gradients and Hessians
11//! - Support for variables, constants, and mathematical functions
12//! - Safe Rust implementation with comprehensive error handling
13//!
14//! # Example
15//!
16//! ```rust
17//! use evalexpr_jit::Equation;
18//!
19//! // Create and compile an equation
20//! let eq = Equation::new("2*x + y^2".to_string()).unwrap();
21//!
22//! // Evaluate at point (x=1, y=2)
23//! let result = eq.eval(&vec![1.0, 2.0]).unwrap(); // Returns 6.0
24//!
25//! // Compute gradient [∂/∂x, ∂/∂y]
26//! let gradient = eq.gradient(&vec![1.0, 2.0]).unwrap(); // Returns [2.0, 4.0]
27//! ```
28
29pub use equation::Equation;
30pub use expr::Expr;
31pub use system::EquationSystem;
32
33pub mod prelude {
34    pub use crate::backends::matrix::Matrix;
35    pub use crate::backends::vector::Vector;
36    pub use crate::equation::Equation;
37    pub use crate::expr::Expr;
38    pub use crate::system::EquationSystem;
39}
40
41/// JIT compilation functionality using Cranelift
42pub mod builder;
43/// Conversion from evalexpr AST to internal expression format
44pub mod convert;
45/// High-level equation handling and evaluation
46pub mod equation;
47/// Error types for parsing, compilation and evaluation
48pub mod errors;
49/// Expression tree representation and symbolic differentiation
50pub mod expr;
51/// System of multiple equations
52pub mod system;
53/// Functions for linking external mathematical operations
54pub(crate) mod operators {
55    pub(crate) mod exp;
56    pub(crate) mod ln;
57    pub(crate) mod pow;
58    pub(crate) mod sqrt;
59    pub(crate) mod trigonometric;
60}
61/// Type definitions for JIT-compiled functions
62pub mod types;
63
64/// Backends for vector operations
65pub mod backends {
66    pub mod matrix;
67    pub mod vector;
68}