Amari v0.12.2
Comprehensive Mathematical Computing Platform with Geometric Algebra, Differential Calculus, Measure Theory, and Holographic Memory
A unified mathematical computing library featuring geometric algebra, differential calculus, measure theory, relativistic physics, tropical algebra, automatic differentiation, holographic associative memory, and information geometry. The library provides multi-GPU infrastructure with intelligent workload distribution and complete WebAssembly support for browser deployment.
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
- 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 with holographic associative memory
- 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.12.2"
# Or individual crates:
# Core geometric algebra and mathematical foundations
= "0.12.2"
# Differential calculus with geometric algebra
= "0.12.2"
# Measure theory and integration
= "0.12.2"
# High-precision relativistic physics
= { = "0.12.2", = ["high-precision"] }
# GPU acceleration
= "0.12.2"
# Optimization algorithms
= "0.12.2"
# Additional mathematical systems
= "0.12.2"
= "0.12.2"
= "0.12.2"
= "0.12.2"
= "0.12.2"
= "0.12.2"
= "0.12.2"
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: Holographic Associative Memory
use TropicalDualClifford;
use ;
// Create holographic memory
let mut memory = new;
// Store key-value associations
let key1 = random_vector;
let value1 = random_vector;
memory.store;
let key2 = random_vector;
let value2 = random_vector;
memory.store;
// Retrieve with a key
let result = memory.retrieve;
println!;
println!;
// Binding operations
let bound = key1.bind; // key ⊛ value
let recovered = bound.unbind; // Approximately recovers value1
println!;
// Check capacity
let info = memory.capacity_info;
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-tropical: Tropical (max-plus) algebra for optimizationamari-dual: Dual numbers for automatic differentiationamari-fusion: Unified Tropical-Dual-Clifford system with holographic associative memoryamari-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.
GPU Module Status (v0.12.2)
| 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 (Holographic) | ✅ Enabled | fusion |
| 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é