math_audio_solvers/lib.rs
1//! High-performance linear solvers for BEM and FEM
2//!
3//! This crate provides a collection of iterative and direct solvers for linear systems,
4//! along with sparse matrix representations and preconditioners.
5//!
6//! # Features
7//!
8//! - **Iterative Solvers**: GMRES, BiCGSTAB, CGS, CG
9//! - **Direct Solvers**: LU decomposition (with BLAS and pure-Rust fallbacks)
10//! - **Preconditioners**: Jacobi, ILU, block diagonal
11//! - **Sparse Matrices**: CSR format with efficient matrix-vector products
12//! - **Generic Scalar Types**: Works with Complex64, Complex32, f64, f32
13//!
14//! # Example
15//!
16//! ```ignore
17//! use math_audio_solvers::{CsrMatrix, gmres, GmresConfig};
18//! use num_complex::Complex64;
19//!
20//! // Create a sparse system matrix
21//! let matrix = CsrMatrix::from_dense(&dense_matrix, 1e-10);
22//!
23//! // Solve with GMRES
24//! let config = GmresConfig::default();
25//! let solution = gmres(&matrix, &rhs, &config)?;
26//! ```
27
28mod blas_helpers;
29pub mod direct;
30pub mod iterative;
31pub mod parallel;
32pub mod preconditioners;
33pub mod sparse;
34pub mod traits;
35
36// Re-export main types
37pub use sparse::{CsrBuilder, CsrMatrix};
38pub use traits::{ComplexField, LinearOperator, Preconditioner};
39
40// Re-export iterative solvers
41pub use iterative::{
42 BiCgstabConfig, BiCgstabSolution, CgConfig, CgSolution, CgsConfig, CgsSolution, GmresConfig,
43 GmresSolution, bicgstab, cg, cgs, gmres,
44};
45
46// Re-export direct solvers
47pub use direct::{LuFactorization, lu_solve};
48
49// Re-export preconditioners
50pub use preconditioners::{
51 AdditiveSchwarzPreconditioner, AmgCoarsening, AmgConfig, AmgCycle, AmgDiagnostics,
52 AmgInterpolation, AmgPreconditioner, AmgSmoother, DiagonalPreconditioner,
53 IdentityPreconditioner, IluColoringPreconditioner, IluFixedPointPreconditioner,
54 IluPreconditioner,
55};