RustedSciThe 0.4.19

Rust framework for symbolic and numerical computing:BVP ( Newton-Raphson frozen/damped/with collocations ), IVP( BDF, Radau, Backward Euler, LSODE, LSODA, RK45, DoPri), nonlinear equations ( Levenberg, Gavin) and more
Documentation
//! A small symbolic-algebra crate built around the original packed atom core.
//!
//! # Dataflow
//! The main dataflow is:
//! `parse` -> packed [`Atom`] construction -> `normalize` -> `derivative` / `evaluate` -> `print`.
//!
//! Parsing produces packed atoms directly, so later stages can work mostly with
//! borrowed [`AtomView`] values instead of allocating temporary trees. Normalization
//! is the semantic center of the crate: constructors and algebraic operations are
//! intentionally thin, and correctness comes from normalizing the packed structure.
//!
//! # Why this stays fast
//! - Expressions are stored in append-only byte buffers instead of pointer-heavy node graphs.
//! - [`AtomView`] is a zero-copy view into those bytes, so many traversals avoid cloning.
//! - Normalization merges factors and terms in-place with small temporary buffers.
//! - [`Workspace`] and [`RecycledAtom`] reuse allocations across operations.
//! - Coefficients stay in small fixed-size rationals, which removes big-number overhead.
//!
//! Those design choices are why the simplified crate can remove features without replacing
//! the underlying data structures with slower owned or boxed forms.

pub mod CodegenIR_atom;
pub mod atom;
pub mod bvp;
pub mod bvp_codegen;

pub mod coefficient;
pub mod conversions;
pub mod derivative;
pub mod diagnostics;
pub mod evaluate;
pub mod jacobian;
pub mod lambdify;
#[cfg(test)]
mod microbench;
mod normalization_examples;
pub mod normalize;
#[cfg(test)]
mod operation_corpus_tests;
pub mod parser;
mod pipeline_examples;
pub mod printer;
#[cfg(test)]
mod scalar_jacobian_story_tests;
pub mod state;
pub mod transform;

pub use atom::{Atom, AtomCore, AtomView};
pub use coefficient::Coefficient;
pub use derivative::{DerivativeError, try_derivative};
pub use diagnostics::{
    ExpressionMetrics, OperationCounts, PowerClass, inspect_atoms, inspect_exprs,
};
pub use evaluate::{
    EvaluationCache, EvaluationFn, EvaluationSymbolFn, ExactConstMap, ExactSymbolMap,
    FloatSymbolMap, FunctionMap, PreparedEvaluator, evaluate, evaluate_exact,
    evaluate_exact_with_symbols, evaluate_with_symbols, prepare_evaluator,
};
pub use jacobian::{
    PreparedSparseAtomSystem, SparseAtomJacobianEntry,
    calc_sparse_jacobian_atom_from_atoms_with_bandwidth, calc_sparse_jacobian_atom_with_bandwidth,
};
pub use parser::parse;
pub use printer::{PrintOptions, print, print_debug, print_with_options};
pub use state::{State, Symbol, Workspace};