Amari v0.8.4
Unified Mathematical Computing Platform with Relativistic Physics & High-Precision Arithmetic
A comprehensive mathematical computing library featuring geometric algebra, relativistic physics, high-precision arithmetic for spacecraft orbital mechanics, tropical algebra, automatic differentiation, and information geometry. Available in Rust and JavaScript/TypeScript through WebAssembly.
Features
New in v0.8.0: Relativistic Physics & High-Precision Arithmetic
- Relativistic Physics: Complete spacetime algebra (Cl(1,3)) with Minkowski signature for relativistic calculations
- Spacecraft Orbital Mechanics: High-precision arithmetic for critical trajectory calculations with configurable tolerance
- Geodesic Integration: Velocity Verlet method for curved spacetime particle trajectories
- Schwarzschild Metric: Spherically symmetric gravitational fields for astrophysics applications
- Arbitrary Precision: Optional GMP/MPFR integration for ultimate precision requirements
- Phantom Types: Compile-time verification of relativistic invariants and spacetime signatures
Core Mathematical Systems
- Geometric Algebra (Clifford Algebra): Multivectors, rotors, and geometric products for 3D rotations and spatial transformations
- 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
Platform Support
- Native Rust: High-performance mathematical computing with zero-cost abstractions
- WebAssembly: High-performance WASM bindings for JavaScript/TypeScript
- GPU Acceleration: WebGPU support for large-scale parallel computations
- TypeScript Support: Full TypeScript definitions included
- Cross-Platform: Linux, macOS, Windows, and browser environments
Installation
Rust Crates
Add to your Cargo.toml:
[]
# Core geometric algebra and mathematical foundations
= "0.8"
# High-precision relativistic physics for spacecraft orbital mechanics
= { = "0.8", = ["high-precision"] }
# GPU acceleration and verification
= "0.8"
# Additional mathematical systems
= "0.8"
= "0.8"
= "0.8"
JavaScript/TypeScript (WebAssembly)
Or with yarn:
Quick Start
Rust: Spacecraft Orbital Mechanics
use *;
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 = new WasmTropicalNumber(3.0);
const trop2 = new WasmTropicalNumber(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 = new WasmDualNumber(2.0, 1.0);
const xSquared = x.mul(x); // f(x) = x², f'(x) = 2x
console.log('f(2) =', xSquared.getReal(), "f'(2) =", xSquared.getDual());
// Clean up WASM memory
e1.free(); e2.free(); bivector.free();
trop1.free(); trop2.free(); sum.free(); product.free();
x.free(); xSquared.free();
}
main();
Use Cases
- Computer Graphics: 3D rotations and transformations using rotors
- Physics Simulations: Geometric algebra for electromagnetic fields
- Machine Learning: Tropical neural networks and automatic differentiation
- Optimization: Tropical algebra for shortest path and scheduling problems
- Scientific Computing: High-performance mathematical operations
- Game Development: Efficient spatial transformations and physics
Architecture
Crates
amari-core: Core Clifford algebra types and CPU implementationsamari-tropical: Tropical (max-plus) algebra for neural networksamari-dual: Dual numbers for automatic differentiationamari-fusion: Unified Tropical-Dual-Clifford systemamari-info-geom: Information geometry and statistical manifoldsamari-wasm: WASM bindings for TypeScript/JavaScript (New in v0.4.0)amari-gpu: Optional GPU acceleration via WebGPU/wgpuamari-automata: Cellular automata with geometric algebraamari-enumerative: Enumerative geometry and algebraic curves
Key Types
// Multivector in Clifford algebra Cl(P,Q,R)
// Tropical-Dual-Clifford unified system
// Dual numbers for automatic differentiation
// Tropical numbers for max-plus algebra
// Common algebras
type Cl3 = ; // 3D Euclidean
type Spacetime = ; // Minkowski spacetime
Quick Start
Tropical-Dual-Clifford System
use TropicalDualClifford;
use DualNumber;
use TropicalNumber;
// 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
let clifford_geom = tdc.clifford; // Geometric relationships
// Perform sensitivity analysis
let sensitivity = tdc.sensitivity_analysis;
let most_sensitive = sensitivity.most_sensitive;
println!;
println!;
Rust
use ;
// 3D Euclidean Clifford algebra
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;
TypeScript/JavaScript
import { initAmari, GA, Rotor } from 'amari';
await initAmari();
// Create basis vectors
const e1 = GA.e1();
const e2 = GA.e2();
// Geometric product
const e12 = e1.geometricProduct(e2);
// Create and apply rotor
const rotor = Rotor.fromBivector(e12, Math.PI / 2);
const rotated = rotor.apply(e1); // e1 → e2
Building
Prerequisites
- Rust 1.75+ with
cargo - Node.js 16+ (for TypeScript bindings)
wasm-pack(installed automatically by build script)
Build Everything
Build Options
Manual Build
# Rust workspace
# WASM package
&&
# TypeScript
&& &&
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
Benchmarks
Run benchmarks to see performance on your system:
Mathematical Foundation
Tropical-Dual-Clifford System
The revolutionary fusion of three algebraic systems:
Tropical Algebra (Max-Plus)
a ⊕ b = max(a, b) // Tropical addition
a ⊙ b = a + b // Tropical multiplication
- Applications: Path optimization, sequence decoding, dynamic programming
- Benefits: Converts exponential operations to linear max operations
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
- Benefits: Exact derivatives without finite differences or computational graphs
Clifford Algebra
ab = a·b + a∧b // Geometric product
- Applications: Rotations, reflections, geometric transformations
- Benefits: Unified treatment of scalars, vectors, bivectors, trivectors
Unified TDC Operations
The fusion system enables simultaneous computation across all three algebras:
- Tropical Phase: Fast approximation using max-plus operations
- Dual Phase: Exact computation with automatic gradients
- Clifford Phase: Geometric refinement and spatial reasoning
Geometric Product
The fundamental operation combining inner and outer products:
ab = a·b + a∧b
Clifford Algebra Cl(P,Q,R)
- P: Basis vectors with e²ᵢ = +1
- Q: Basis vectors with e²ᵢ = -1
- R: Basis vectors with e²ᵢ = 0
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
- Amari-Chentsov Tensor: Fundamental tensor structure
Examples
Tropical-Dual-Clifford System
use ;
// Optimization using all three algebras
let initial_params = vec!;
let tdc = from_logits;
let optimizer = new
.with_tropical_warmup // Fast tropical approximation
.with_dual_refinement // Exact dual gradients
.with_clifford_projection; // Geometric constraints
let result = optimizer.optimize?;
Automatic Differentiation
use ;
// Forward-mode autodiff
let inputs: = vec!;
let output = softmax;
// output[i].real contains the value
// output[i].dual contains the gradient
Tropical Sequence Decoding
use ViterbiDecoder;
// Efficient Viterbi algorithm using tropical algebra
let transitions = create_transition_matrix;
let emissions = create_emission_matrix;
let observations = vec!;
let decoder = new;
let best_path = decoder.decode;
3D Rotations
cargo run --example basic
See amari-core/examples/basic.rs for a comprehensive rotation example.
Information Geometry
use ;
// Bregman divergence with quadratic potential
let phi = ;
let divergence = bregman_divergence?;
Testing
# Run all tests
# Run with features
# Property-based tests
Documentation
# Generate and open docs
# API documentation will be available at:
# target/doc/amari_core/index.html
Use Cases
- Computer Graphics: Rotations, reflections, and transformations
- Robotics: Orientation representation and interpolation
- Physics: Spacetime calculations and electromagnetic field theory
- Machine Learning: Statistical manifold operations and natural gradients
- Computer Vision: Multi-view geometry and camera calibration
- Mathematical Optimization: Hybrid tropical-dual-Clifford optimization
- Sequence Analysis: Efficient decoding using tropical Viterbi
- Automatic Differentiation: Exact gradients for scientific computing
Research Applications
- Information Geometry: Statistical manifold computations
- Geometric Deep Learning: Operations on non-Euclidean data
- Quantum Computing: Clifford group operations
- Crystallography: Symmetry group calculations
- Tropical Geometry: Max-plus linear algebra and optimization
- Computational Algebra: Multi-algebraic system integration
- Neural Architecture Search: Gradient-based optimization with geometric constraints
Contributing
Contributions are welcome! Please see our Contributing Guidelines for details.
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é