thales 0.4.0

A comprehensive Computer Algebra System (CAS) library for symbolic mathematics, equation solving, calculus, and linear algebra
Documentation

thales

License GitHub Release CI Crates.io Rust Documentation Swift Versions Platforms Swift Documentation

A comprehensive Computer Algebra System (CAS) library for symbolic mathematics, equation solving, calculus, and numerical methods. Named after Thales of Miletus, the first mathematician in the Greek tradition.

Full Documentation on docs.rs

Features

  • Expression Parsing - Parse mathematical expressions with full operator precedence
  • Equation Solving - Linear, quadratic, polynomial, transcendental, and systems of equations
  • Calculus - Differentiation, integration, limits, Taylor series, ODEs
  • Numerical Methods - Newton-Raphson, bisection, Brent's method when symbolic fails
  • Coordinate Systems - 2D/3D transformations, complex numbers, De Moivre's theorem
  • Units & Dimensions - Dimensional analysis and unit conversion
  • iOS Support - FFI bindings for Swift via swift-bridge

Installation

[dependencies]
thales = "0.4.0"

Quick Start

Solve an Equation

use thales::{parse_equation, SmartSolver, Solver, Variable};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let equation = parse_equation("2*x + 5 = 13")?;
    let solver = SmartSolver::new();
    let x = Variable::new("x");
    let (solution, path) = solver.solve(&equation, &x)?;

    // View step-by-step solution
    for step in path.steps() {
        println!("{}", step);
    }
    Ok(())
}

Coordinate Transformations

use thales::{Cartesian2D, Polar};

fn main() {
    let point = Cartesian2D::new(3.0, 4.0);
    let polar = point.to_polar();

    assert!((polar.r - 5.0).abs() < 1e-10);

    // Round-trip conversion
    let back = polar.to_cartesian();
    assert!((back.x - 3.0).abs() < 1e-10);
}

Documentation

The full documentation is available on docs.rs/thales, including:

Guides

Guide Description
Solving Equations Linear, quadratic, polynomial, and systems
Calculus Operations Derivatives, integrals, limits, ODEs
Series Expansions Taylor, Maclaurin, Laurent, asymptotic
Coordinate Systems 2D/3D transforms, complex numbers
Numerical Methods Root-finding algorithms
Working with Units Dimensional analysis
Error Handling ThalesError patterns

LaTeX Support

Thales can parse LaTeX mathematical notation into its internal expression tree via parse_latex.

Supported constructs

Category LaTeX syntax Examples
Fractions \frac{num}{denom} \frac{1}{2}, \frac{x+1}{y}
Square root \sqrt{x} \sqrt{2}, \sqrt{x+1}
nth root \sqrt[n]{x} \sqrt[3]{8}, \sqrt[n]{x}
Superscripts x^{n} or x^n x^{2}, e^{-x}
Subscripts x_{n} or x_n x_{1}, x_{12}
Greek letters \alpha, \beta, \pi, etc. \alpha, \theta, \pi
Trig functions \sin, \cos, \tan, etc. \sin{x}, \cos(\theta)
Logarithms / exp \ln, \log, \exp \ln{x}, \log_{10}{x}, \log_{2}{8}
Integrals \int_{a}^{b} expr \, dx \int_{0}^{1} x \, dx, \int x dx
Limits \lim_{x \to a} \lim_{x \to 0} x, \lim_{x \to \infty} x
Sums \sum_{i=a}^{b} \sum_{i=1}^{10} i
Operators \cdot, \times, \div, \pm a \cdot b, 2 \times 3

Not yet supported

The following constructs are not currently parsed and will return an error:

  • Double/contour integrals: \iint, \oint
  • Products: \prod
  • Partial derivatives: \partial
  • Matrix environments: \begin{matrix}, \begin{pmatrix}, \begin{bmatrix}, etc.

Optional LAPACK Acceleration

Enable hardware-accelerated matrix operations (eigenvalues, eigenvectors, QR decomposition, linear system solving) by selecting a LAPACK backend:

# macOS / iOS — links against Apple Accelerate.framework
thales = { version = "0.3", features = ["lapack-accelerate"] }

# Linux — uses reference LAPACK (requires liblapack-dev / gfortran)
thales = { version = "0.3", features = ["lapack-netlib"] }

# Linux — uses OpenBLAS (requires libopenblas-dev)
thales = { version = "0.3", features = ["lapack-openblas"] }

The lapack feature is an alias for lapack-accelerate. Without any LAPACK feature, thales uses pure-Rust implementations for all numerical linear algebra.

iOS Cross-Compilation

Build for iOS with FFI support:

# Add iOS targets
rustup target add aarch64-apple-ios aarch64-apple-ios-sim

# Build for device
cargo build --release --features ffi --target aarch64-apple-ios

See IOS_BUILD.md for complete iOS integration instructions.

Changelog

See CHANGELOG.md for version history and release notes.

License

MIT License - see LICENSE for details.

Links