Skip to main content

scivex_sym/
lib.rs

1//! `scivex-sym` — Symbolic math, CAS, and expression simplification.
2//!
3//! Provides from-scratch implementations of:
4//! - Symbolic expression AST with evaluation, substitution, and operator overloading
5//! - Algebraic simplification with constant folding and identity reduction
6//! - Symbolic differentiation with chain rule support
7//! - Algebraic expansion and factoring
8//! - Linear and quadratic equation solving
9//! - Coefficient-based polynomials with Horner evaluation and root finding
10//! - Symbolic integration (power rule, trig, exp, integration by parts)
11//! - Taylor / Maclaurin series expansion
12
13/// Algebraic expansion and factoring.
14pub mod algebra;
15/// Symbolic differentiation.
16pub mod diff;
17/// Symbolic math error types.
18pub mod error;
19/// Expression AST, evaluation, substitution, and operator overloading.
20pub mod expr;
21/// Symbolic integration (indefinite and definite).
22pub mod integrate;
23
24/// Coefficient-based polynomials with Horner evaluation and root finding.
25pub mod polynomial;
26/// Algebraic simplification and constant folding.
27pub mod simplify;
28/// Linear and quadratic equation solving.
29pub mod solve;
30/// Taylor and Maclaurin series expansion.
31pub mod taylor;
32
33pub use algebra::{expand, factor_out};
34pub use diff::{diff, diff_n};
35pub use error::{Result, SymError};
36pub use expr::{Expr, MathFn, abs, constant, cos, e, exp, ln, one, pi, sin, sqrt, tan, var, zero};
37pub use integrate::{definite_integral, integrate};
38pub use polynomial::Polynomial;
39pub use simplify::simplify;
40pub use solve::{solve_linear, solve_quadratic};
41pub use taylor::{maclaurin, taylor};
42
43/// Items intended for glob-import: `use scivex_sym::prelude::*;`
44pub mod prelude {
45    pub use crate::algebra::{expand, factor_out};
46    pub use crate::diff::{diff, diff_n};
47    pub use crate::error::{Result, SymError};
48    pub use crate::expr::{
49        Expr, MathFn, abs, constant, cos, e, exp, ln, one, pi, sin, sqrt, tan, var, zero,
50    };
51    pub use crate::integrate::{definite_integral, integrate};
52    pub use crate::polynomial::Polynomial;
53    pub use crate::simplify::simplify;
54    pub use crate::solve::{solve_linear, solve_quadratic};
55    pub use crate::taylor::{maclaurin, taylor};
56}