Amari v0.14.0
Comprehensive Mathematical Computing Platform with Geometric Algebra, Differential Calculus, Measure Theory, Probability Theory, and Vector Symbolic Architectures
A unified mathematical computing library featuring geometric algebra, differential calculus, measure theory, probability theory on geometric spaces, relativistic physics, tropical algebra, automatic differentiation, holographic associative memory (Vector Symbolic Architectures), and information geometry. The library provides multi-GPU infrastructure with intelligent workload distribution and complete WebAssembly support for browser deployment.
Live Examples Suite | API Documentation
Features
Core Mathematical Systems
- Geometric Algebra (Clifford Algebra): Multivectors, rotors, and geometric products for 3D rotations and spatial transformations
- Differential Calculus: Unified geometric calculus with scalar/vector fields, gradients, divergence, curl, and Lie derivatives
- Measure Theory: Sigma-algebras, measurable functions, integration on geometric spaces, and probability measures
- Probability Theory: Distributions on multivector spaces, stochastic processes, MCMC sampling, and Bayesian inference
- Vector Symbolic Architectures: Holographic Reduced Representations (HRR), binding algebras, and associative memory
- Relativistic Physics: Complete spacetime algebra (Cl(1,3)) with Minkowski signature for relativistic calculations
- Tropical Algebra: Max-plus semiring operations for optimization and neural network applications
- Automatic Differentiation: Forward-mode AD with dual numbers for exact derivatives
- Fusion Systems: Tropical-dual-Clifford fusion combining three algebraic systems
- Information Geometry: Statistical manifolds, KL/JS divergences, and Fisher information
- Optimization: Gradient-based optimization with geometric constraints
- Network Analysis: Geometric network analysis and graph neural networks
- Cellular Automata: Geometric automata with configurable rules
- Enumerative Geometry: Algebraic curves and enumerative computations
Multi-GPU Infrastructure
- Multi-GPU Architecture: Infrastructure supporting up to 8 GPUs with intelligent workload distribution
- Advanced Load Balancing: Five strategies including Balanced, CapabilityAware, MemoryAware, LatencyOptimized, and Adaptive
- Performance Profiling: Timeline analysis with microsecond precision and automatic bottleneck detection
- Comprehensive Benchmarking: Production-ready validation across all mathematical domains
- Graceful Degradation: Automatic fallback to single GPU or CPU when multi-GPU unavailable
Platform Support
- Native Rust: High-performance execution with rug (GMP/MPFR) backend for high-precision arithmetic
- WebAssembly: Full-featured WASM bindings with dashu backend for browser compatibility
- GPU Acceleration: WebGPU support for large-scale parallel computations
- TypeScript Support: Complete TypeScript definitions included
- Cross-Platform: Linux, macOS, Windows, browsers, Node.js, and edge computing environments
Installation
Rust Crates
Add to your Cargo.toml:
[]
# Complete library with all features
= "0.14.0"
# Or individual crates:
# Core geometric algebra and mathematical foundations
= "0.14.0"
# Differential calculus with geometric algebra
= "0.14.0"
# Measure theory and integration
= "0.14.0"
# Probability theory on geometric algebra spaces
= "0.14.0"
# Vector Symbolic Architectures and holographic memory
= "0.14.0"
# High-precision relativistic physics
= { = "0.14.0", = ["high-precision"] }
# GPU acceleration
= "0.14.0"
# Optimization algorithms
= "0.14.0"
# Additional mathematical systems
= "0.14.0"
= "0.14.0"
= "0.14.0"
= "0.14.0"
= "0.14.0"
= "0.14.0"
= "0.14.0"
JavaScript/TypeScript (WebAssembly)
Or with yarn:
Quick Start
Rust: Geometric Algebra
use ;
// 3D Euclidean Clifford algebra Cl(3,0,0)
type Cl3 = ;
// Create basis vectors
let e1: Cl3 = e1;
let e2: Cl3 = e2;
// Geometric product: e1 * e2 = e1 ∧ e2 (bivector)
let e12 = e1.geometric_product;
// Create rotor for 90° rotation in xy-plane
let rotor = from_bivector;
// Apply rotation: e1 → e2
let rotated = rotor.apply;
Rust: Differential Calculus
use ;
use Multivector;
// Define a scalar field f(x,y,z) = x² + y² + z²
let field = new;
// Compute gradient at a point
let point = ;
let gradient = field.gradient;
// Define a vector field
let vector_field = new;
// Compute divergence and curl
let derivative = new;
let div = derivative.divergence;
let curl = derivative.curl;
Rust: Tropical Algebra
use TropicalNumber;
// Create tropical numbers using the constructor
let a = new;
let b = new;
// Tropical operations
let sum = a.tropical_add; // max(3, 5) = 5
let product = a.tropical_mul; // 3 + 5 = 8
// Access values
println!;
println!;
// Tropical identities
let zero = tropical_zero; // -∞ (additive identity)
let one = tropical_one; // 0 (multiplicative identity)
Rust: Automatic Differentiation
use DualNumber;
// Create dual number for differentiation
// f(x) = x² at x = 3, with seed derivative 1
let x = new;
// Compute f(x) = x²
let result = x * x;
// Extract value and derivative
println!; // 9.0
println!; // 6.0
// For constants (derivative = 0)
let c = constant;
let scaled = x * c; // 2x, derivative = 2
Rust: Tropical-Dual-Clifford Fusion
use TropicalDualClifford;
// Create from logits (common in ML applications)
let logits = vec!;
let tdc = from_logits;
// Evaluate using all three algebras simultaneously
let other = from_logits;
let evaluation = tdc.evaluate;
// Extract features from each algebra
let tropical_features = tdc.extract_tropical_features; // Fast path-finding
let dual_features = tdc.extract_dual_features; // Automatic gradients
// Perform sensitivity analysis
let sensitivity = tdc.sensitivity_analysis;
let most_sensitive = sensitivity.most_sensitive;
println!;
println!;
Rust: Vector Symbolic Architectures (Holographic Memory)
use ;
// Create holographic memory with 256-dimensional vectors
let mut memory: = new;
// Generate random keys and values
let key1 = random;
let value1 = random;
// Store key-value associations via superposition
memory.store;
let key2 = random;
let value2 = random;
memory.store;
// Retrieve with a query key
let retrieved = memory.retrieve;
println!;
// Binding operations for role-filler structures
let bound = key1.bind; // key ⊛ value
let recovered = bound.unbind; // Approximately recovers value1
println!;
// Resonator network for cleanup/factorization
use Resonator;
let codebook = vec!;
let resonator = new;
let noisy = retrieved.clone; // Noisy retrieval
let cleaned = resonator.cleanup; // 10 iterations
Rust: Probability on Geometric Algebra
use ;
use ;
// Gaussian distribution on Cl(3,0,0) - 8-dimensional multivector space
let gaussian = standard;
// Draw samples
let mut rng = thread_rng;
let sample = gaussian.sample;
println!;
// Evaluate log-probability
let log_p = gaussian.log_prob.unwrap;
println!;
// Grade-concentrated distribution (e.g., only on bivectors)
let bivector_dist = grade_concentrated.unwrap;
// Geometric Brownian Motion on multivector space
let gbm = new; // drift=0.1, volatility=0.2
let path = gbm.sample_path.unwrap;
println!;
// MCMC sampling with Metropolis-Hastings
use MetropolisHastings;
let sampler = new; // step_size=0.5
let samples = sampler.sample_n;
println!;
JavaScript/TypeScript: Mathematical Computing
import init, { WasmMultivector, WasmTropicalNumber, WasmDualNumber } from '@justinelliottcobb/amari-wasm';
async function main() {
// Initialize the WASM module
await init();
// Geometric Algebra: Create and rotate vectors
const e1 = WasmMultivector.basisVector(0);
const e2 = WasmMultivector.basisVector(1);
const bivector = e1.geometricProduct(e2);
console.log('Geometric product:', bivector.toString());
// Tropical Algebra: Neural network operations
const trop1 = WasmTropicalNumber.new(3.0);
const trop2 = WasmTropicalNumber.new(5.0);
const sum = trop1.tropicalAdd(trop2); // max(3, 5) = 5
const product = trop1.tropicalMul(trop2); // 3 + 5 = 8
console.log('Tropical operations:', sum.getValue(), product.getValue());
// Automatic Differentiation: Compute derivatives
const x = WasmDualNumber.new(2.0, 1.0);
const xSquared = x.mul(x); // f(x) = x², f'(x) = 2x
console.log('f(2) =', xSquared.getValue(), "f'(2) =", xSquared.getDerivative());
// Clean up WASM memory
e1.free(); e2.free(); bivector.free();
trop1.free(); trop2.free(); sum.free(); product.free();
x.free(); xSquared.free();
}
main();
Architecture
Crate Hierarchy
Domain Crates (provide mathematical APIs):
amari-core: Core Clifford algebra types and CPU implementationsamari-measure: Measure theory, sigma-algebras, and integrationamari-calculus: Differential calculus with geometric algebraamari-probabilistic: Probability distributions on multivector spaces, stochastic processes, MCMCamari-holographic: Vector Symbolic Architectures (VSA), binding algebras, holographic memoryamari-tropical: Tropical (max-plus) algebra for optimizationamari-dual: Dual numbers for automatic differentiationamari-fusion: Unified Tropical-Dual-Clifford systemamari-info-geom: Information geometry and statistical manifoldsamari-automata: Cellular automata with geometric algebraamari-network: Graph neural networks and network analysisamari-relativistic: Spacetime algebra and relativistic physicsamari-enumerative: Enumerative geometry and algebraic curvesamari-optimization: Gradient-based optimization algorithmsamari-flynn: Probabilistic verification contracts
Integration Crates (consume domain APIs):
amari-gpu: Multi-GPU acceleration with WebGPUamari-wasm: WebAssembly bindings for TypeScript/JavaScriptamari: Umbrella crate re-exporting all features
Key Types
// Multivector in Clifford algebra Cl(P,Q,R)
// P: positive signature, Q: negative signature, R: zero signature
// Tropical numbers (max-plus semiring)
// Use TropicalNumber::new(value)
// Dual numbers for automatic differentiation
// Use DualNumber::new(value, derivative)
// Multi-variable dual numbers
// Use MultiDualNumber::new(value, gradients)
// Tropical-Dual-Clifford unified system
// Common algebras
type Cl3 = ; // 3D Euclidean
type Spacetime = ; // Minkowski spacetime
type PGA3D = ; // Projective Geometric Algebra
Mathematical Foundation
Clifford Algebra Cl(P,Q,R)
- P: Basis vectors with e²ᵢ = +1 (positive signature)
- Q: Basis vectors with e²ᵢ = -1 (negative signature)
- R: Basis vectors with e²ᵢ = 0 (degenerate)
ab = a·b + a∧b // Geometric product = inner + outer product
Tropical Algebra (Max-Plus)
a ⊕ b = max(a, b) // Tropical addition
a ⊙ b = a + b // Tropical multiplication
Applications: Path optimization, sequence decoding, dynamic programming
Dual Numbers
a + εb where ε² = 0
(a + εb) + (c + εd) = (a + c) + ε(b + d)
(a + εb) × (c + εd) = ac + ε(ad + bc)
Applications: Automatic differentiation, gradient computation
Information Geometry
- Fisher Information Metric: Riemannian metric on statistical manifolds
- α-Connections: Generalized connections parameterized by α ∈ [-1,1]
- Dually Flat Manifolds: Manifolds with e-connection (α=+1) and m-connection (α=-1)
- Bregman Divergences: Information-geometric divergences
v0.12.0 Breaking Changes
Version 0.12.0 introduced significant API improvements for better encapsulation:
TropicalNumber
// Before (v0.11.x)
let a = TropicalNumber;
let value = a.0;
let sum = a.tropical_add;
// After (v0.12.0+)
let a = new;
let value = a.value;
let sum = a.tropical_add; // Now takes reference
DualNumber
// Before (v0.11.x)
let x = DualNumber ;
let value = x.real;
// After (v0.12.0+)
let x = new;
let value = x.value;
let deriv = x.derivative;
See MIGRATION_v0.12.0.md for complete migration guide.
Interactive Examples Suite
The Amari Examples Suite provides comprehensive interactive documentation:
-
Live Visualizations: 7 interactive visualizations demonstrating mathematical concepts
- Multivector coefficient manipulation in Cl(3,0,0)
- Tropical algebra operations with convergence animation
- Dual numbers with real-time derivative curves
- Rotor-based 3D rotations
- Fisher information on probability simplex
- MCMC sampling visualization
- Interactive geometric networks
-
Comprehensive API Reference: 77 classes with 300+ methods fully documented
- Geometric Algebra (Multivector, Rotor, Bivector)
- Tropical Algebra (TropicalNumber, TropicalMatrix)
- Automatic Differentiation (DualNumber, MultiDualNumber)
- Probability (GaussianMultivector, MCMC samplers)
- And 12 more categories
-
Interactive Playground: Write and run JavaScript code with live WASM execution
GPU Module Status (v0.14.0)
| Module | Status | Feature Flag |
|---|---|---|
| Core GA | ✅ Enabled | default |
| Info Geometry | ✅ Enabled | default |
| Relativistic | ✅ Enabled | default |
| Network | ✅ Enabled | default |
| Measure | ✅ Enabled | measure |
| Calculus | ✅ Enabled | calculus |
| Dual | ✅ Enabled | dual |
| Enumerative | ✅ Enabled | enumerative |
| Automata | ✅ Enabled | automata |
| Fusion | ✅ Enabled | fusion |
| Holographic | ✅ Enabled | holographic |
| Probabilistic | ✅ Enabled | probabilistic |
| Tropical | ❌ Disabled | - |
Note: Tropical GPU module temporarily disabled due to Rust orphan impl rules. Use CPU implementations from domain crates.
Building
Prerequisites
- Rust 1.75+ with
cargo - Node.js 16+ (for TypeScript bindings)
wasm-pack(for WASM builds)
Build and Test
# Run all tests
# Run with all features
# Build documentation
WebAssembly Build
Performance
The library is optimized for high-performance applications:
- SIMD: Vectorized operations where supported
- Cache Alignment: 64-byte aligned data structures
- Const Generics: Zero-cost abstractions for dimensions
- GPU Fallback: Automatic CPU/GPU dispatch based on workload size
- Batch Operations: Efficient batch processing for large datasets
Documentation
- Migration Guide: Migrating from v0.11.x to v0.12.0+
- Changelog: Version history and changes
- API Documentation: Complete API reference
Contributing
Contributions are welcome. For development setup:
License
This project is licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT License (LICENSE-MIT)
at your option.
Acknowledgments
- Inspired by the geometric algebra community and research in Information Geometry
- Built with modern Rust performance idioms and WebAssembly best practices
- Named after Shun-ichi Amari's contributions to Information Geometry
Support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: API Docs
"Geometry is the art of correct reasoning from incorrectly drawn figures." - Henri Poincaré