Skip to main content

Fast symbolic differentiation library - Rust-powered Python bindings

Project description

SymbAnaFis

Crates.io PyPI License

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.

Key Capabilities

  • ⚡ High-Performance Architecture: Built on Rust for speed and memory safety, with interned strings and optimized memory layout.
  • ∂ Symbolic Differentiation: Supports product, chain, and quotient rules for a vast array of mathematical functions.
  • ✨ Algebraic Simplification: Intelligent simplification engine covering trigonometric identities, constant folding, and algebraic expansion.
  • 📊 Uncertainty Propagation: Comprehensive support for calculating uncertainty propagation with full covariance matrix integration.
  • ∇ Vector Calculus: Native symbolic computation of Gradients, Hessians, and Jacobian matrices.
  • 🚀 Parallel Processing: Optional parallel evaluation engine using Rayon for massive batch operations.
  • 📦 Python Bindings: Seamless Python integration via maturin, offering the speed of Rust with the ease of Python.

Installation

# Python
pip install symb-anafis

# Rust
cargo add symb_anafis

Quick Start

Python

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"

Rust

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(())
}

Advanced Features

🔍 Fine-Grained Control

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

📉 Uncertainty Propagation

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)

⚡ Parallel Evaluation

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);

🛠️ Custom Functions

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

Supported Functions

SymbAnaFis supports over 50 built-in mathematical functions:

Category Typical Functions
Trigonometric sin, cos, tan, cot, sec, csc, asin, acos, ...
Hyperbolic sinh, cosh, tanh, coth, asinh, acosh, ...
Exponential exp, ln, log, log10, log2, pow
Special gamma, beta, erf, besselj, zeta, LambertW
Utility sqrt, cbrt, abs, sign, floor, ceil

Documentation

  • API Reference - Detailed guide to all functions and modules.
  • docs.rs - Full Rust crate documentation.

License

Apache License 2.0 - see LICENSE

Citation

If you use SymbAnaFis in academic work, please cite:

@software{symbanafis,
  author       = {Martins, Pedro},
  title        = {SymbAnaFis: High-Performance Symbolic Mathematics Library},
  year         = {2025},
  url          = {https://github.com/CokieMiner/SymbAnaFis},
  version      = {0.4.1}
}

Built with ❤️ in Rust 🚀

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

symb_anafis-0.4.1-cp314-cp314-win_amd64.whl (888.1 kB view details)

Uploaded CPython 3.14Windows x86-64

symb_anafis-0.4.1-cp314-cp314-manylinux_2_35_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.35+ x86-64

symb_anafis-0.4.1-cp314-cp314-macosx_11_0_arm64.whl (960.4 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

symb_anafis-0.4.1-cp313-cp313-win_amd64.whl (894.0 kB view details)

Uploaded CPython 3.13Windows x86-64

symb_anafis-0.4.1-cp313-cp313-manylinux_2_35_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.35+ x86-64

symb_anafis-0.4.1-cp313-cp313-macosx_11_0_arm64.whl (964.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

symb_anafis-0.4.1-cp312-cp312-win_amd64.whl (894.1 kB view details)

Uploaded CPython 3.12Windows x86-64

symb_anafis-0.4.1-cp312-cp312-manylinux_2_35_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.35+ x86-64

symb_anafis-0.4.1-cp312-cp312-macosx_11_0_arm64.whl (965.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

symb_anafis-0.4.1-cp311-cp311-win_amd64.whl (906.7 kB view details)

Uploaded CPython 3.11Windows x86-64

symb_anafis-0.4.1-cp311-cp311-manylinux_2_35_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.35+ x86-64

symb_anafis-0.4.1-cp311-cp311-macosx_11_0_arm64.whl (964.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

symb_anafis-0.4.1-cp310-cp310-win_amd64.whl (906.5 kB view details)

Uploaded CPython 3.10Windows x86-64

symb_anafis-0.4.1-cp310-cp310-manylinux_2_35_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.35+ x86-64

symb_anafis-0.4.1-cp310-cp310-macosx_11_0_arm64.whl (964.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file symb_anafis-0.4.1-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for symb_anafis-0.4.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 45a30bb8a605f433027149c19cb9042ad9f63525bd6e6d76a35957be1f039192
MD5 836349ccad2f00effbb89daa15b877c6
BLAKE2b-256 65338d5dd47b9cdda4a26c19279c691969a5a7b98d69160e300116d09a82120a

See more details on using hashes here.

File details

Details for the file symb_anafis-0.4.1-cp314-cp314-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for symb_anafis-0.4.1-cp314-cp314-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 0e0bf6d25115b92df07d67f37804c4844c737fb0c0fa4a49a74a2319ab34eabe
MD5 005ecb135098541671143f885a190cb3
BLAKE2b-256 5679e7101836d27df407401dc081f7d2a9c805c6c614f14445277236c0ff1c10

See more details on using hashes here.

File details

Details for the file symb_anafis-0.4.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for symb_anafis-0.4.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f57587706f35207a55ec06de17b78db9d502a1fbfeff618c8a59c679fa265591
MD5 ba481963cbb9b16d15ff6a05a26e4a4a
BLAKE2b-256 059dcb0fd2b6e7862771d5e21431140bdf079a89b664e95dc51015388c5c8cdd

See more details on using hashes here.

File details

Details for the file symb_anafis-0.4.1-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for symb_anafis-0.4.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 85e67f286f927ea0ba67e63ff8e6864f920621624a94c19522310e300ad21487
MD5 64ff6ea2e0dff169b57ac295521e2d98
BLAKE2b-256 fcf37e7e3dec796079373031826cf56ddaaa7e80555faf69f5dfa9ed6c49b11d

See more details on using hashes here.

File details

Details for the file symb_anafis-0.4.1-cp313-cp313-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for symb_anafis-0.4.1-cp313-cp313-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 98d161c5f07a77398a46191a1c7271f9e17d0ef203814229f1d8d6eacfe2c5f9
MD5 4015f6a340d2d8b6c0711caa3a7dd58b
BLAKE2b-256 cef28d24ea41412fc1b8329bd2ad31e7aa5e1e5e1ace754581e2b8739945e663

See more details on using hashes here.

File details

Details for the file symb_anafis-0.4.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for symb_anafis-0.4.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d970ed076c7c9283def6811353b2a7a7046b6baf3001d88f1dbc27c11d2055ef
MD5 3eda48b8e093acbd4707b409e7d938fb
BLAKE2b-256 d0ddc439890260f34c2086351cd41e582f5364d0ffef1f8e42315b161771c010

See more details on using hashes here.

File details

Details for the file symb_anafis-0.4.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for symb_anafis-0.4.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 3dc51724dd08549bae93520580499f00117706797b6ee7a18ccd7692c971bc82
MD5 8f6c8db462492c14155a245a685d0e9e
BLAKE2b-256 52b2a24809b8ffdbc665ee1a8dfea159d14d4a6ad09ef8c761db5e34d9e6d5e1

See more details on using hashes here.

File details

Details for the file symb_anafis-0.4.1-cp312-cp312-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for symb_anafis-0.4.1-cp312-cp312-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 2214733105b6231daafcfd71004a7a1077f9f94f981d36cb99110fa104f43c0d
MD5 967714a1308c0806f0718c9987d0daec
BLAKE2b-256 f644eaffa3af1c1e49df4e21d0329248e9d2b856c7c5b7263a97a7566b3df90f

See more details on using hashes here.

File details

Details for the file symb_anafis-0.4.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for symb_anafis-0.4.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 05e755bce20dd4193e8c76a5b9512ad10d8c8359e039c052e1f3138603704c02
MD5 4c16abcc3b08b9a87bdcecd5e45939e0
BLAKE2b-256 fad609e978b9f0cd083014797708aaca4d25bba9402e3e77ea16dac37c25934a

See more details on using hashes here.

File details

Details for the file symb_anafis-0.4.1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for symb_anafis-0.4.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 98f68051fc4e6c0db523482b1f509092516352b04b24fa2ef4f6db1cc69bd57a
MD5 9c40d76950fe75acbea52e9c1fc3fe6e
BLAKE2b-256 74b04a1ee02ae22fbda802b6bf1eb32c7f4e2a563d0090b89f09f7f5707535ae

See more details on using hashes here.

File details

Details for the file symb_anafis-0.4.1-cp311-cp311-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for symb_anafis-0.4.1-cp311-cp311-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 72d6cc28aa929d8641e9cc87e7bcadd4e8dddaac96411491fd7184f997d0dc60
MD5 62fafe23e827a523dc8f782e882f3470
BLAKE2b-256 df72fa31927ec264f4e51865710f1f0e60d1b5e6b4f22f3bcec82bdfba852b9f

See more details on using hashes here.

File details

Details for the file symb_anafis-0.4.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for symb_anafis-0.4.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7d6e0a4896ad1fbe4c4c632de8b2cb0bdc5389d60c1716bc5dc34ef8a30365db
MD5 2978c510967862c3f75ba6c76d03ffec
BLAKE2b-256 95bcc8c04ad204e2457fbc6b7519fa27541ecf35c80b2151b804111b0b4e7595

See more details on using hashes here.

File details

Details for the file symb_anafis-0.4.1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for symb_anafis-0.4.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 53804e639430be1193b1480990c7cdfd02c93278463c0740311f4f9457adc0de
MD5 c187731197bcab850f40cda662361c2a
BLAKE2b-256 5db88fd26ef6b07a0e3b46e3c7a44855846fe1f43db402ca3043392e462d71b3

See more details on using hashes here.

File details

Details for the file symb_anafis-0.4.1-cp310-cp310-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for symb_anafis-0.4.1-cp310-cp310-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 15126109c1a33085913a0eed94a57217195e85f9e7568723e8a56fdcc7fc5642
MD5 1e82b91ae78234592d630fe613d82428
BLAKE2b-256 8a17c368194e268debc50250495478c0037336b34e0d460862eebd123cc74bdb

See more details on using hashes here.

File details

Details for the file symb_anafis-0.4.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for symb_anafis-0.4.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 af0bb5324771843bd23eab2f65481a62a50ca8a49057c5615e13b51dc4643074
MD5 ddeed071f4afd8f0839070fb7a7d53e0
BLAKE2b-256 301f8303c292d0df5b3b2f2fa615b6be16c155b482aed8c7297847345b164e9b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page