Files
wifi-densepose/vendor/ruvector/crates/ruvector-math/src/lib.rs

167 lines
7.1 KiB
Rust
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
//! # RuVector Math
//!
//! Advanced mathematics for next-generation vector search and AI governance, featuring:
//!
//! ## Core Modules
//!
//! - **Optimal Transport**: Wasserstein distances, Sinkhorn algorithm, Sliced Wasserstein
//! - **Information Geometry**: Fisher Information, Natural Gradient, K-FAC
//! - **Product Manifolds**: Mixed-curvature spaces (Euclidean × Hyperbolic × Spherical)
//! - **Spherical Geometry**: Geodesics on the n-sphere for cyclical patterns
//!
//! ## Theoretical CS Modules (New)
//!
//! - **Tropical Algebra**: Max-plus semiring for piecewise linear analysis and routing
//! - **Tensor Networks**: TT/Tucker/CP decomposition for memory compression
//! - **Spectral Methods**: Chebyshev polynomials for graph diffusion without eigendecomposition
//! - **Persistent Homology**: TDA for topological drift detection and coherence monitoring
//! - **Polynomial Optimization**: SOS certificates for provable bounds on attention policies
//!
//! ## Design Principles
//!
//! 1. **Pure Rust**: No BLAS/LAPACK dependencies for full WASM compatibility
//! 2. **SIMD-Ready**: Hot paths optimized for auto-vectorization
//! 3. **Numerically Stable**: Log-domain arithmetic, clamping, and stable softmax
//! 4. **Modular**: Each component usable independently
//! 5. **Mincut as Spine**: All modules designed to integrate with mincut governance
//!
//! ## Architecture: Mincut as Unifying Signal
//!
//! ```text
//! ┌─────────────────────────────────────────────────────────────┐
//! │ Mincut Governance │
//! │ (Structural tension meter for attention graphs) │
//! └───────────────────────┬─────────────────────────────────────┘
//! │
//! ┌───────────────────┼───────────────────┐
//! ▼ ▼ ▼
//! ┌─────────┐ ┌───────────┐ ┌───────────┐
//! │ Tensor │ │ Spectral │ │ TDA │
//! │ Networks│ │ Methods │ │ Homology │
//! │ (TT) │ │(Chebyshev)│ │ │
//! └─────────┘ └───────────┘ └───────────┘
//! Compress Smooth within Monitor drift
//! representations partitions over time
//!
//! ┌───────────────────┼───────────────────┐
//! ▼ ▼ ▼
//! ┌─────────┐ ┌───────────┐ ┌───────────┐
//! │Tropical │ │ SOS │ │ Optimal │
//! │ Algebra │ │ Certs │ │ Transport │
//! └─────────┘ └───────────┘ └───────────┘
//! Plan safe Certify policy Measure
//! routing paths constraints distributional
//! distances
//! ```
//!
//! ## Quick Start
//!
//! ```rust
//! use ruvector_math::optimal_transport::{SlicedWasserstein, SinkhornSolver, OptimalTransport};
//! use ruvector_math::information_geometry::FisherInformation;
//! use ruvector_math::product_manifold::ProductManifold;
//!
//! // Sliced Wasserstein distance between point clouds
//! let sw = SlicedWasserstein::new(100).with_seed(42);
//! let points_a = vec![vec![0.0, 0.0], vec![1.0, 0.0]];
//! let points_b = vec![vec![0.5, 0.5], vec![1.5, 0.5]];
//! let dist = sw.distance(&points_a, &points_b);
//! assert!(dist > 0.0);
//!
//! // Sinkhorn optimal transport
//! let solver = SinkhornSolver::new(0.1, 100);
//! let cost_matrix = vec![vec![0.0, 1.0], vec![1.0, 0.0]];
//! let weights_a = vec![0.5, 0.5];
//! let weights_b = vec![0.5, 0.5];
//! let result = solver.solve(&cost_matrix, &weights_a, &weights_b).unwrap();
//! assert!(result.converged);
//!
//! // Product manifold operations (Euclidean only for simplicity)
//! let manifold = ProductManifold::new(2, 0, 0);
//! let point_a = vec![0.0, 0.0];
//! let point_b = vec![3.0, 4.0];
//! let dist = manifold.distance(&point_a, &point_b).unwrap();
//! assert!((dist - 5.0).abs() < 1e-10);
//! ```
#![warn(missing_docs)]
#![warn(clippy::all)]
#![cfg_attr(not(feature = "std"), no_std)]
#[cfg(not(feature = "std"))]
extern crate alloc;
// Core modules
pub mod error;
pub mod information_geometry;
pub mod optimal_transport;
pub mod product_manifold;
pub mod spherical;
pub mod utils;
// New theoretical CS modules
pub mod homology;
pub mod optimization;
pub mod spectral;
pub mod tensor_networks;
pub mod tropical;
// Re-exports for convenience - Core
pub use error::{MathError, Result};
pub use information_geometry::{FisherInformation, KFACApproximation, NaturalGradient};
pub use optimal_transport::{
GromovWasserstein, SinkhornSolver, SlicedWasserstein, TransportPlan, WassersteinConfig,
};
pub use product_manifold::{CurvatureType, ProductManifold, ProductManifoldConfig};
pub use spherical::{SphericalConfig, SphericalSpace};
// Re-exports - Tropical Algebra
pub use tropical::{LinearRegionCounter, TropicalNeuralAnalysis};
pub use tropical::{Tropical, TropicalMatrix, TropicalPolynomial, TropicalSemiring};
// Re-exports - Tensor Networks
pub use tensor_networks::{CPConfig, CPDecomposition, TuckerConfig, TuckerDecomposition};
pub use tensor_networks::{DenseTensor, TensorTrain, TensorTrainConfig};
pub use tensor_networks::{TensorNetwork, TensorNode};
// Re-exports - Spectral Methods
pub use spectral::ScaledLaplacian;
pub use spectral::{ChebyshevExpansion, ChebyshevPolynomial};
pub use spectral::{FilterType, GraphFilter, SpectralFilter};
pub use spectral::{GraphWavelet, SpectralClustering, SpectralWaveletTransform};
// Re-exports - Homology
pub use homology::{BirthDeathPair, PersistenceDiagram, PersistentHomology};
pub use homology::{BottleneckDistance, WassersteinDistance as HomologyWasserstein};
pub use homology::{Filtration, Simplex, SimplicialComplex, VietorisRips};
// Re-exports - Optimization
pub use optimization::{BoundsCertificate, NonnegativityCertificate};
pub use optimization::{Monomial, Polynomial, Term};
pub use optimization::{SOSDecomposition, SOSResult};
/// Prelude module for convenient imports
pub mod prelude {
pub use crate::error::*;
pub use crate::homology::*;
pub use crate::information_geometry::*;
pub use crate::optimal_transport::*;
pub use crate::optimization::*;
pub use crate::product_manifold::*;
pub use crate::spectral::*;
pub use crate::spherical::*;
pub use crate::tensor_networks::*;
pub use crate::tropical::*;
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_crate_version() {
let version = env!("CARGO_PKG_VERSION");
assert!(!version.is_empty());
}
}