| Crates.io | symb_anafis |
| lib.rs | symb_anafis |
| version | 0.7.0 |
| created_at | 2025-11-29 01:58:23.277575+00 |
| updated_at | 2026-01-20 18:01:15.74421+00 |
| description | Fast symbolic differentiation library for Rust |
| homepage | |
| repository | https://github.com/CokieMiner/SymbAnaFis |
| max_upload_size | |
| id | 1956268 |
| size | 2,263,838 |
High-performance symbolic mathematics library written in Rust with Python bindings.
SymbAnaFis provides a robust engine for symbolic differentiation, simplification, and evaluation, designed for performance-critical applications in physics, engineering, and machine learning.
maturin, offering the speed of Rust with the ease of Python.SymbAnaFis performance is validated against SymPy and SymEngine using complex physical simulations. Each benchmark features a Quad-View Dashboard comparing real-time simulations side-by-side.
Watch Video Simulates 500,000 particles flowing through the Aizawa field, comparing Euler integration throughput.
Watch Video Visualizes 1,000,000 particles evolving in the Clifford map, testing discrete map evaluation speed.
Watch Video Simulates 50,000 chaotic double pendulums, verifying symbolic differentiation correctness and RK4 integration stability.
Watch Video Massive particle descent on a complex terrain function, showcasing symbolic differentiation of compiled functions.
# Python
pip install symb-anafis
# Rust
cargo add symb_anafis
import symb_anafis
# Differentiate complex expressions
result = symb_anafis.diff("x^3 + sin(x)", "x")
# → "3*x^2 + cos(x)"
# Algebraic Simplification
result = symb_anafis.simplify("sin(x)^2 + cos(x)^2")
# → "1"
# Handle constants automatically
result = symb_anafis.diff("a*x^2", "x", fixed_vars=["a"])
# → "2*a*x"
use symb_anafis::{diff, simplify, symb};
fn main() -> Result<(), Box<dyn std::error::Error>> {
// String API for ease of use
let result = diff("sin(x) * x", "x", None, None)?;
println!("{result}"); // cos(x)*x + sin(x)
// Type-safe API (Symbol is Copy - no clone needed!)
let x = symb("x");
let expr = x.pow(2.0) + x.sin(); // x² + sin(x)
// Export to LaTeX
println!("{}", expr.to_latex()); // x^{2} + \sin(x)
Ok(())
}
Use the Builder pattern to configure safety limits and behavior.
use symb_anafis::{Diff, Simplify};
Diff::new()
.domain_safe(true) // Prevent unsafe simplifications (e.g., x/x != 1 if x=0)
.max_depth(200) // Prevent stack overflows on massive expressions
.diff_str("sqrt(x^2)", "x")?; // Result: abs(x)/x
Calculate error propagation symbolically, supporting correlated variables.
use symb_anafis::uncertainty_propagation;
// Calculate uncertainty formula for f = x + y with full covariance support
let sigma = uncertainty_propagation(&expr, &["x", "y"], None)?;
// → sqrt(sigma_x^2 + 2*sigma_x*sigma_y*rho_xy + sigma_y^2)
Evaluate expressions over large datasets in parallel (requires parallel feature).
// Evaluate symbolic expressions across thousands of data points efficiently
let results = evaluate_parallel(&inputs, &data);
Register custom functions with their own derivative rules.
use symb_anafis::{Diff, UserFunction};
Diff::new()
.user_fn("f", UserFunction::new(1..=1).partial(0, |args| {
// Define ∂f/∂u = 2u for f(u)
2.0 * args[0].clone()
}))
.diff_str("f(x^2)", "x")?; // → 4*x^3
SymbAnaFis supports over 50 built-in mathematical functions:
| Category | Functions |
|---|---|
| Trig | sin, cos, tan, cot, sec, csc |
| Inverse Trig | asin, acos, atan, atan2, acot, asec, acsc |
| Hyperbolic | sinh, cosh, tanh, coth, sech, csch |
| Inverse Hyperbolic | asinh, acosh, atanh, acoth, asech, acsch |
| Exp/Log | exp, ln, log(b, x), log10, log2, exp_polar(acts as exp for now) |
| Roots | sqrt, cbrt |
| Error Functions | erf, erfc |
| Gamma Family | gamma, digamma, trigamma, tetragamma, polygamma(n, x), beta(a, b) |
| Zeta | zeta, zeta_deriv(n, s) |
| Bessel | besselj(n, x), bessely(n, x), besseli(n, x), besselk(n, x) |
| Elliptic Integrals | elliptic_k, elliptic_e |
| Orthogonal Polynomials | hermite(n, x), assoc_legendre(l, m, x) |
| Spherical Harmonics | spherical_harmonic(l, m, θ, φ), ynm(l, m, θ, φ) |
| Other | abs, signum, sinc, lambertw, floor, ceil, round |
Apache License 2.0 - see LICENSE
If you use SymbAnaFis in academic work, please cite:
@software{symbanafis,
author = {Martins, Pedro},
title = {SymbAnaFis: High-Performance Symbolic Mathematics Library},
year = {2026},
url = {https://github.com/CokieMiner/SymbAnaFis},
version = {0.7.0}
}
Built with ❤️ in Rust 🚀