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}