Expand description
MathCompile: High-Performance Mathematical Expression Compilation
MathCompile provides a three-layer optimization strategy for mathematical expressions:
- Final Tagless Approach: Type-safe expression building with multiple interpreters
- Symbolic Optimization: Algebraic simplification using egglog
- Compilation Backends: Rust hot-loading (primary) and optional Cranelift JIT
§Architecture
┌─────────────────────────────────────────────────────────────┐
│ Final Tagless Layer │
│ (Expression Building & Type Safety) │
└─────────────────────┬───────────────────────────────────────┘
│
┌─────────────────────▼───────────────────────────────────────┐
│ Symbolic Optimization │
│ (Algebraic Simplification & Rewrite Rules) │
└─────────────────────┬───────────────────────────────────────┘
│
┌─────────────────────▼───────────────────────────────────────┐
│ Compilation Backends │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Rust │ │ Cranelift │ │ Future Backends │ │
│ │ Hot-Loading │ │ JIT │ │ (LLVM, etc.) │ │
│ │ (Primary) │ │ (Optional) │ │ │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────┘Re-exports§
pub use error::MathCompileError;pub use error::Result;pub use expr::Expr;pub use final_tagless::ASTEval;pub use final_tagless::ASTMathExpr;pub use final_tagless::ASTRepr;pub use final_tagless::DirectEval;pub use final_tagless::MathExpr;pub use final_tagless::NumericType;pub use final_tagless::PrettyPrint;pub use final_tagless::StatisticalExpr;pub use symbolic::CompilationApproach;pub use symbolic::CompilationStrategy;pub use symbolic::OptimizationConfig;pub use symbolic::SymbolicOptimizer;pub use backends::CompiledRustFunction;pub use backends::RustCodeGenerator;pub use backends::RustCompiler;pub use backends::RustOptLevel;pub use ergonomics::MathBuilder;pub use ergonomics::presets;pub use symbolic_ad::FunctionWithDerivatives;pub use symbolic_ad::SymbolicAD;pub use symbolic_ad::SymbolicADConfig;pub use symbolic_ad::SymbolicADStats;pub use summation::SumResult;pub use summation::SummationConfig;pub use summation::SummationPattern;pub use summation::SummationSimplifier;pub use anf::ANFAtom;pub use anf::ANFCodeGen;pub use anf::ANFComputation;pub use anf::ANFConverter;pub use anf::ANFExpr;pub use anf::ANFVarGen;pub use anf::VarRef;pub use anf::convert_to_anf;pub use anf::generate_rust_code;pub use pretty::pretty_anf;pub use pretty::pretty_ast;
Modules§
- anf
- A-Normal Form (ANF) Intermediate Representation
- ast_
utils - AST Utility Functions
- backends
- Compilation Backends for
MathCompile - egglog_
integration - Egglog Integration for Symbolic Optimization
- ergonomics
- Ergonomic API for Mathematical Expression Building
- error
- Error types for
MathCompile - expr
- Ergonomic wrapper for final tagless expressions with operator overloading
- final_
tagless - Final Tagless Approach for Symbolic Mathematical Expressions
- interval_
domain - Interval-based domain analysis with endpoint specification Interval-Based Domain Analysis
- power_
utils - Power Optimization Utilities
- prelude
- Prelude module for convenient imports
- pretty
- Pretty-printers for
ASTReprandANFExpr - summation
- symbolic
- Symbolic optimization using egglog for algebraic simplification
- symbolic_
ad - Symbolic Automatic Differentiation
- transcendental
- Optimal rational approximations for transcendental functions
Constants§
- VERSION
- Version information for the
MathCompilelibrary