symplex 0.57.0

Exact symbolic mathematics for Rust: calculus, summation, solving, linear algebra, transforms, compile-time dimensional analysis, and Rust/C code generation
Documentation
[package]
name = "symplex"
version = "0.57.0"
edition = "2024"
rust-version = "1.93.0"
license = "MIT OR Apache-2.0"
description = "Exact symbolic mathematics for Rust: calculus, summation, solving, linear algebra, transforms, compile-time dimensional analysis, and Rust/C code generation"
repository = "https://github.com/cgorski/symplex"
homepage = "https://github.com/cgorski/symplex"
documentation = "https://docs.rs/symplex"
readme = "README.md"
keywords = ["symbolic", "math", "cas", "codegen", "robotics"]
categories = ["mathematics", "science", "development-tools::build-utils"]
# Keep the published tarball to what `cargo test` / `cargo doc` need.  The
# book's Markdown sources stay in: `src/doctests.rs` runs their Rust blocks
# under `cargo test --doc`; only the rendered HTML is excluded.
exclude = [
    "/book/book",
    "/book/book.toml",
    "/probes",
    "/scripts",
    "/.github",
    "/fuzz",
    "/symplex-wasm",
    "/rubi-harness",
    "/*.log",
]

[dependencies]
symplex-macros = { version = "0.3.5", path = "symplex-macros" }
# 0.4.7 keeps a one-digit `BigUint` inline (0.4.8 fixes 0.4.7's division
# regression): `matrix_exp` of a 6×6 unitary matrix over ℚ(√2, √3, i) makes
# 31 M allocations instead of 194 M and takes 6.0 s instead of 8.9 s.
num-bigint = "0.4.8"
num-rational = "0.4"
num-integer = "0.1"
num-traits = "0.2"
# `std` only forwards to `num-traits/std` (already on) and unlocks
# `Complex64::norm`/`arg`; the crate is pure Rust and `no_std`-capable.
num-complex = { version = "0.4", default-features = false, features = ["std"] }
# `union`: the inline and heap representations share their storage, so an
# `ExprNode` is 40 bytes instead of 48.
smallvec = { version = "1.13", features = ["union"] }
rustc-hash = "2.1"
bitflags = "2.11"
parking_lot = "0.12"
thiserror = "2.0"
astro-float = "0.9.6"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tracing = "0.1"
typenum = "1.19"

[dev-dependencies]
criterion = "0.5"
proptest = "1.10"
trybuild = "1"
static_assertions = "1.1"
# The homogeneous-tuple ratchet (`tests/unit/test_homogeneous_tuples.rs`) parses `src/` with syn.
syn = { version = "2", default-features = false, features = ["parsing", "printing", "full", "visit"] }
quote = "1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
tracing-test = "0.2"

[[bench]]
name = "canonicalization"
harness = false

[[bench]]
name = "exact_matrix"
harness = false