ruvector_solver/lib.rs
1//! Iterative sparse linear solvers for the ruvector ecosystem.
2//!
3//! This crate provides iterative methods for solving `Ax = b` where `A` is a
4//! sparse matrix stored in CSR format.
5//!
6//! # Available Solvers
7//!
8//! | Solver | Feature gate | Method |
9//! |--------|-------------|--------|
10//! | [`NeumannSolver`](neumann::NeumannSolver) | `neumann` | Neumann series x = sum (I-A)^k b |
11//!
12//! # Example
13//!
14//! ```rust
15//! use ruvector_solver::types::{ComputeBudget, CsrMatrix};
16//! use ruvector_solver::neumann::NeumannSolver;
17//! use ruvector_solver::traits::SolverEngine;
18//!
19//! // Build a diagonally dominant 3x3 matrix (f32)
20//! let matrix = CsrMatrix::<f32>::from_coo(3, 3, vec![
21//! (0, 0, 2.0_f32), (0, 1, -0.5_f32),
22//! (1, 0, -0.5_f32), (1, 1, 2.0_f32), (1, 2, -0.5_f32),
23//! (2, 1, -0.5_f32), (2, 2, 2.0_f32),
24//! ]);
25//! let rhs = vec![1.0_f32, 0.0, 1.0];
26//!
27//! let solver = NeumannSolver::new(1e-6, 500);
28//! let result = solver.solve(&matrix, &rhs).unwrap();
29//! assert!(result.residual_norm < 1e-4);
30//! ```
31
32pub mod arena;
33pub mod audit;
34pub mod budget;
35pub mod error;
36pub mod events;
37pub mod simd;
38pub mod traits;
39pub mod types;
40pub mod validation;
41
42#[cfg(feature = "neumann")]
43pub mod neumann;
44
45#[cfg(feature = "cg")]
46pub mod cg;
47
48#[cfg(feature = "forward-push")]
49pub mod forward_push;
50
51#[cfg(feature = "backward-push")]
52pub mod backward_push;
53
54#[cfg(feature = "hybrid-random-walk")]
55pub mod random_walk;
56
57#[cfg(feature = "bmssp")]
58pub mod bmssp;
59
60#[cfg(feature = "true-solver")]
61pub mod true_solver;
62
63pub mod router;