symplex 0.22.3

Exact symbolic mathematics for Rust: calculus, summation, solving, linear algebra, transforms, compile-time dimensional analysis, and Rust/C code generation
Documentation
//! Compile-time dimensional analysis for physical quantities.
//!
//! This module provides type-safe physical quantity tracking using phantom types
//! and typenum type-level integers. Named newtypes like [`Force`](crate::units::si::Force),
//! [`Voltage`](crate::units::si::Voltage), and [`Energy`](crate::units::si::Energy) produce
//! clear compiler error messages ("expected Force, found Mass") while the generic
//! [`Qty`](crate::units::qty::Qty) type handles exotic dimension combinations.
//!
//! # Architecture
//!
//! - **Named newtypes** (30 types): `Force`, `Voltage`, `Energy`, etc. — best error messages
//! - **Generic `Qty<D>`**: Fallback for intermediate/exotic dimensions — uses typenum Dim
//! - **Blanket `Mul`/`Div`**: Any `Qty<D1> * Qty<D2>` computes output dimension via typenum
//! - **`dim!` macro**: Ergonomic dimension-checked arithmetic: `dim!(ctx, Force: m * a)`
//! - **`assert_dim!`**: Compile-time checkpoint assertions
//! - **`const_assert_dim!`**: Compile-time formula verification with custom error messages

/// Compile-time dimension-assertion macros (`assert_dim!`, `const_assert_dim!`).
pub mod assert_macros;
/// Dimensional calculus: differentiation and integration that track dimensions.
pub mod calculus;
/// Physical constants as dimension-typed symbolic expressions.
pub mod constants;
/// Exact conversion factor constants with derivation verification tests.
pub mod conv_factors;
/// Unit-conversion helpers between SI prefixes and common non-SI units.
pub mod conversions;
/// Dimension vectors: phantom-typed compile-time SI dimension tracking.
pub mod dim;
/// Runtime dimension inference for expression trees.
pub mod inference;
/// Generic dimensioned quantity wrapper and arithmetic operators.
pub mod qty;
/// Named SI newtypes (e.g. `Force`, `Voltage`, `Energy`) with constructor helpers.
pub mod si;

// Re-export all public items for `use symplex::units::*`
pub use dim::*;
pub use qty::*;
pub use si::*;

// conversions adds impls, no new public types to re-export
// calculus re-exports its own items
pub use calculus::*;
pub use inference::*;