mathhook_core/matrices/
unified.rs

1//! Unified matrix system with zero-cost abstractions
2//!
3//! This module provides a single `Matrix` type that can represent all special
4//! matrix types while maintaining optimal memory usage and performance.
5
6use crate::matrices::types::*;
7use serde::{Deserialize, Serialize};
8
9mod construction;
10mod decomposition;
11mod operations;
12mod solvers;
13
14pub use operations::CoreMatrixOps;
15
16/// Unified matrix type that can represent any matrix efficiently
17///
18/// This enum uses zero-cost abstractions to provide a single interface
19/// for all matrix types while maintaining optimal memory usage.
20#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
21pub enum Matrix {
22    /// Regular dense matrix: O(n²) memory
23    Dense(MatrixData),
24
25    /// Identity matrix: O(1) memory
26    Identity(IdentityMatrixData),
27
28    /// Zero matrix: O(1) memory
29    Zero(ZeroMatrixData),
30
31    /// Diagonal matrix: O(n) memory
32    Diagonal(DiagonalMatrixData),
33
34    /// Scalar matrix: O(1) memory
35    Scalar(ScalarMatrixData),
36
37    /// Upper triangular: O(n²/2) memory
38    UpperTriangular(UpperTriangularMatrixData),
39
40    /// Lower triangular: O(n²/2) memory
41    LowerTriangular(LowerTriangularMatrixData),
42
43    /// Symmetric matrix: O(n²/2) memory
44    Symmetric(SymmetricMatrixData),
45
46    /// Permutation matrix: O(n) memory
47    Permutation(PermutationMatrixData),
48}