wifi-densepose/vendor/sublinear-time-solver/src
ruv 4b1005524e feat: complete vendor repos, add edge intelligence and WASM modules
- Add 154 missing vendor files (gitignore was filtering them)
  - vendor/midstream: 564 files (was 561)
  - vendor/sublinear-time-solver: 1190 files (was 1039)
- Add ESP32 edge processing (ADR-039): presence, vitals, fall detection
- Add WASM programmable sensing (ADR-040/041) with wasm3 runtime
- Add firmware CI workflow (.github/workflows/firmware-ci.yml)
- Add wifi-densepose-wasm-edge crate for edge WASM modules
- Update sensing server, provision.py, UI components

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-02 23:53:25 -05:00
..
benchmarks feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
bin feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
cli feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
consciousness feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
consciousness-explorer feat: complete vendor repos, add edge intelligence and WASM modules 2026-03-02 23:53:25 -05:00
convergence feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
core feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
emergence feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
graph feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
matrix feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
mcp feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
neural-pattern-recognition feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
reasongraph feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
solver feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
sublinear feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
temporal_nexus feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
utils feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
README.md feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
bmssp.rs feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
consciousness_demo.rs feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
consciousness_experiments.rs feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
core.rs feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
error.rs feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
fast_solver.rs feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
index.ts feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
lib.rs feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
lib_simple.rs feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
math_wasm.rs feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
mcp_consciousness_integration.rs feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
optimized_solver.rs feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
rustc_ai_optimizations.rs feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
rustc_optimization_benchmarks.rs feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
simd_ops.rs feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
solver.js feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
solver_core.rs feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
tcm_implementation.js feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
temporal_consciousness_goap.rs feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
temporal_consciousness_validator.rs feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
types.rs feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
ultra_fast.rs feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
utils.rs feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
wasm.rs feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
wasm_bindings.rs feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00
wasm_iface.rs feat: vendor midstream and sublinear-time-solver libraries (#109) 2026-03-02 23:34:05 -05:00

README.md

๐Ÿฆ€ Sublinear-Time-Solver Rust Crate

Crates.io Documentation License: MIT License: Apache 2.0 Rust Build Status

High-performance Rust implementation of sublinear-time algorithms for solving asymmetric diagonally dominant linear systems with O(log^k n) complexity

๐Ÿš€ Quick Start

Add this to your Cargo.toml:

[dependencies]
sublinear-time-solver = "0.1.0"

๐Ÿ“– Basic Usage

use sublinear_solver::{Solver, SolverMethod, Matrix, Vector};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Create a simple 3x3 diagonally dominant system
    // 4x + y = 5
    // x + 3y - z = 4
    // -y + 2z = 3
    let matrix = Matrix::from_dense(vec![
        vec![4.0, 1.0, 0.0],
        vec![1.0, 3.0, -1.0],
        vec![0.0, -1.0, 2.0],
    ])?;

    let rhs = Vector::from_slice(&[5.0, 4.0, 3.0]);

    // Create solver and solve
    let solver = Solver::new();
    let solution = solver.solve(&matrix, &rhs, SolverMethod::ConjugateGradient)?;

    println!("Solution: {:?}", solution.vector());
    // Output: Solution: [1.0, 1.0, 2.0]

    Ok(())
}

โšก High-Performance Features

Sparse Matrix Support

use sublinear_solver::{SparseMatrix, CooMatrix};

// Efficient sparse matrix representation
let mut matrix = SparseMatrix::new(1000, 1000);
matrix.insert(0, 0, 4.0);
matrix.insert(0, 1, 1.0);
matrix.insert(1, 0, 1.0);
matrix.insert(1, 1, 3.0);

// Or use COO format for bulk construction
let coo = CooMatrix::from_triplets(
    vec![0, 0, 1, 1],     // row indices
    vec![0, 1, 0, 1],     // column indices
    vec![4.0, 1.0, 1.0, 3.0], // values
    1000, 1000
);

Streaming Solutions

use sublinear_solver::{StreamingSolver, ConvergenceOptions};

let streaming_solver = StreamingSolver::new(ConvergenceOptions {
    tolerance: 1e-8,
    max_iterations: 1000,
    convergence_check_interval: 10,
});

// Get intermediate results as solver converges
for step in streaming_solver.solve_stream(&matrix, &rhs, SolverMethod::Jacobi)? {
    println!("Iteration {}: residual = {:.2e}", step.iteration, step.residual);

    if step.iteration % 100 == 0 {
        println!("Intermediate solution: {:?}", step.current_solution);
    }
}

Parallel Processing

use sublinear_solver::{ParallelSolver, ThreadPoolConfig};

// Enable parallel processing with custom thread pool
let parallel_solver = ParallelSolver::new(ThreadPoolConfig {
    num_threads: 8,
    chunk_size: 1000,
    enable_simd: true,
});

let solution = parallel_solver.solve_parallel(&matrix, &rhs, SolverMethod::Hybrid)?;

๐Ÿงฎ Algorithm Selection

Available Methods

use sublinear_solver::SolverMethod;

// Choose based on your matrix properties
let method = match matrix_properties {
    // Symmetric positive definite matrices
    MatrixType::SymmetricPD => SolverMethod::ConjugateGradient,

    // Large sparse matrices with fast convergence needs
    MatrixType::SparseLarge => SolverMethod::Neumann,

    // When you only need specific solution entries
    MatrixType::LocalizedSolution => SolverMethod::ForwardPush,

    // Graph-like matrices (PageRank, network flow)
    MatrixType::GraphBased => SolverMethod::BackwardPush,

    // General case - automatically selects best method
    _ => SolverMethod::Hybrid,
};

Method Comparison

Method Time Complexity Memory Best For
Neumann O(log n) O(nnz) Well-conditioned sparse
ForwardPush O(1/ฮต) O(nnz) Localized solutions
BackwardPush O(1/ฮต) O(nnz) Graph problems
ConjugateGradient O(โˆšn log n) O(nnz) Symmetric matrices
Jacobi O(log n) O(n) Simple iteration
GaussSeidel O(log n) O(n) Sequential updates
Hybrid O(log n) O(nnz) Automatic selection

๐ŸŽฏ Advanced Usage

Custom Convergence Criteria

use sublinear_solver::{ConvergenceOptions, ResidualType};

let options = ConvergenceOptions::builder()
    .tolerance(1e-10)
    .max_iterations(5000)
    .residual_type(ResidualType::Relative)
    .convergence_history(true)
    .early_stopping_patience(50)
    .build();

let solution = solver.solve_with_options(&matrix, &rhs, SolverMethod::Hybrid, options)?;

// Access convergence information
println!("Converged in {} iterations", solution.iterations());
println!("Final residual: {:.2e}", solution.residual());
println!("Convergence history: {:?}", solution.convergence_history());

Matrix Analysis

use sublinear_solver::analysis::{MatrixAnalyzer, ConditionEstimator};

let analyzer = MatrixAnalyzer::new(&matrix);

// Check matrix properties
println!("Is diagonally dominant: {}", analyzer.is_diagonally_dominant());
println!("Sparsity: {:.2}%", analyzer.sparsity() * 100.0);
println!("Condition number estimate: {:.2e}", analyzer.condition_estimate());

// Get recommendations
let recommendation = analyzer.recommend_method();
println!("Recommended method: {:?}", recommendation.method);
println!("Expected convergence: {} iterations", recommendation.estimated_iterations);

Error Handling and Diagnostics

use sublinear_solver::{SolverError, DiagnosticInfo};

match solver.solve(&matrix, &rhs, SolverMethod::ConjugateGradient) {
    Ok(solution) => {
        println!("Solution: {:?}", solution.vector());

        // Check solution quality
        let residual = matrix.residual(&solution.vector(), &rhs);
        println!("Solution residual: {:.2e}", residual);
    }
    Err(SolverError::ConvergenceFailure { iterations, residual, diagnostic }) => {
        eprintln!("Failed to converge after {} iterations", iterations);
        eprintln!("Final residual: {:.2e}", residual);

        if let Some(info) = diagnostic {
            eprintln!("Diagnostic: {}", info.message());
            eprintln!("Suggested action: {}", info.suggestion());
        }
    }
    Err(SolverError::InvalidMatrix { reason }) => {
        eprintln!("Matrix validation failed: {}", reason);
    }
    Err(e) => {
        eprintln!("Solver error: {}", e);
    }
}

๐ŸŒ WebAssembly Integration

Enable WASM features for browser/Node.js deployment:

[dependencies]
sublinear-time-solver = { version = "0.1.0", features = ["wasm"] }
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;

#[cfg(feature = "wasm")]
#[wasm_bindgen]
pub struct WasmSolver {
    inner: Solver,
}

#[cfg(feature = "wasm")]
#[wasm_bindgen]
impl WasmSolver {
    #[wasm_bindgen(constructor)]
    pub fn new() -> WasmSolver {
        WasmSolver {
            inner: Solver::new(),
        }
    }

    #[wasm_bindgen]
    pub fn solve_dense(&self, matrix: &[f64], rhs: &[f64], size: usize) -> Vec<f64> {
        // Implementation for WASM interface
        // ...
    }
}

๐Ÿ”ง Feature Flags

[dependencies]
sublinear-time-solver = { version = "0.1.0", features = [
    "wasm",      # WebAssembly support
    "parallel",  # Multi-threading with rayon
    "simd",      # SIMD optimizations
    "serde",     # Serialization support
    "cli"        # Command-line interface
] }

Available Features

  • default: Standard library support, basic serialization
  • std: Full standard library (enabled by default)
  • wasm: WebAssembly bindings and browser compatibility
  • parallel: Multi-threaded operations with rayon
  • simd: SIMD vectorization for numerical operations
  • serde: Serialize/deserialize matrices and solutions
  • cli: Command-line interface tools

๐Ÿ“Š Performance Benchmarks

Rust vs Other Implementations

Matrix Size: 100,000 ร— 100,000 (0.1% sparsity)
Hardware: AMD Ryzen 9 5950X, 32GB RAM

Implementation           Time      Memory    Accuracy
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
sublinear-solver (Rust)  145ms     58MB      1.2e-8
NumPy (Python)          8.2s      2.1GB     1.1e-8
SciPy sparse            2.1s      340MB     1.3e-8
Eigen (C++)             890ms     120MB     1.1e-8

Scaling Performance

// Benchmark different matrix sizes
use criterion::{black_box, criterion_group, criterion_main, Criterion};

fn benchmark_scaling(c: &mut Criterion) {
    let sizes = vec![1000, 10000, 100000, 1000000];

    for &size in &sizes {
        let matrix = generate_sparse_dd_matrix(size, 0.001); // 0.1% sparsity
        let rhs = Vector::random(size);

        c.bench_function(&format!("solve_{}", size), |b| {
            b.iter(|| {
                let solver = Solver::new();
                solver.solve(black_box(&matrix), black_box(&rhs), SolverMethod::Hybrid)
            })
        });
    }
}

criterion_group!(benches, benchmark_scaling);
criterion_main!(benches);

๐Ÿค– Integration Examples

Multi-Agent Systems

use sublinear_solver::{Solver, SparseMatrix};

struct SwarmCoordinator {
    solver: Solver,
    communication_matrix: SparseMatrix,
    agent_states: Vec<f64>,
}

impl SwarmCoordinator {
    pub fn new(num_agents: usize) -> Self {
        let comm_matrix = build_communication_graph(num_agents);
        Self {
            solver: Solver::new(),
            communication_matrix: comm_matrix,
            agent_states: vec![0.0; num_agents],
        }
    }

    pub fn coordinate(&mut self, target_states: &[f64]) -> Result<Vec<f64>, SolverError> {
        // Solve consensus problem: L * x = target_states
        // where L is the graph Laplacian
        let laplacian = self.communication_matrix.to_laplacian();
        let solution = self.solver.solve(
            &laplacian,
            &Vector::from_slice(target_states),
            SolverMethod::ForwardPush
        )?;

        self.agent_states = solution.vector().to_vec();
        Ok(self.agent_states.clone())
    }
}

Machine Learning Integration

use sublinear_solver::{Solver, Matrix, Vector, SolverMethod};

struct OnlineLinearRegression {
    solver: Solver,
    feature_matrix: Matrix,
    targets: Vector,
    weights: Option<Vector>,
    regularization: f64,
}

impl OnlineLinearRegression {
    pub fn new(regularization: f64) -> Self {
        Self {
            solver: Solver::new(),
            feature_matrix: Matrix::empty(),
            targets: Vector::empty(),
            weights: None,
            regularization,
        }
    }

    pub fn update(&mut self, features: &[f64], target: f64) -> Result<(), SolverError> {
        // Add new sample to dataset
        self.feature_matrix.add_row(features);
        self.targets.push(target);

        // Solve regularized normal equations: (X^T X + ฮปI) w = X^T y
        let xtx = self.feature_matrix.transpose().multiply(&self.feature_matrix);
        let regularized = xtx.add_diagonal(self.regularization);
        let xty = self.feature_matrix.transpose().multiply_vector(&self.targets);

        let solution = self.solver.solve(&regularized, &xty, SolverMethod::ConjugateGradient)?;
        self.weights = Some(solution.vector().clone());

        Ok(())
    }

    pub fn predict(&self, features: &[f64]) -> Option<f64> {
        self.weights.as_ref().map(|w| {
            features.iter().zip(w.iter()).map(|(f, w)| f * w).sum()
        })
    }
}

๐Ÿงช Testing

# Run all tests
cargo test

# Run with specific features
cargo test --features "parallel,simd"

# Run benchmarks
cargo bench

# Test WASM build
wasm-pack test --node

# Property-based testing
cargo test --features "proptest"

๐Ÿ“š API Documentation

Generate and view complete API documentation:

cargo doc --open --features "parallel,simd,wasm"

๐Ÿ”— Integration with Other Crates

nalgebra

use nalgebra::{DMatrix, DVector};
use sublinear_solver::Solver;

// Convert from nalgebra types
let nalgebra_matrix = DMatrix::from_fn(3, 3, |i, j| if i == j { 4.0 } else { 1.0 });
let nalgebra_vector = DVector::from_vec(vec![1.0, 2.0, 3.0]);

let matrix = Matrix::from_nalgebra(&nalgebra_matrix);
let rhs = Vector::from_nalgebra(&nalgebra_vector);

let solution = solver.solve(&matrix, &rhs, SolverMethod::ConjugateGradient)?;
let result_nalgebra = solution.to_nalgebra();

ndarray

use ndarray::{Array2, Array1};

let ndarray_matrix = Array2::eye(1000) * 4.0 + Array2::ones((1000, 1000));
let ndarray_rhs = Array1::ones(1000);

let matrix = Matrix::from_ndarray(&ndarray_matrix);
let rhs = Vector::from_ndarray(&ndarray_rhs);

๐Ÿ› ๏ธ Development

Building from Source

# Clone the repository
git clone https://github.com/your-org/sublinear-time-solver
cd sublinear-time-solver

# Build with all features
cargo build --release --all-features

# Build for WASM
wasm-pack build --target nodejs --out-dir js/pkg

# Run benchmarks
cargo bench --features "parallel,simd"

Project Structure

src/
โ”œโ”€โ”€ lib.rs              # Main library entry point
โ”œโ”€โ”€ solver/             # Core solver implementations
โ”‚   โ”œโ”€โ”€ mod.rs
โ”‚   โ”œโ”€โ”€ neumann.rs      # Neumann series method
โ”‚   โ”œโ”€โ”€ push.rs         # Forward/backward push methods
โ”‚   โ”œโ”€โ”€ jacobi.rs       # Jacobi iteration
โ”‚   โ”œโ”€โ”€ cg.rs           # Conjugate gradient
โ”‚   โ””โ”€โ”€ hybrid.rs       # Hybrid method selection
โ”œโ”€โ”€ matrix/             # Matrix representations and operations
โ”‚   โ”œโ”€โ”€ mod.rs
โ”‚   โ”œโ”€โ”€ sparse.rs       # Sparse matrix formats
โ”‚   โ”œโ”€โ”€ dense.rs        # Dense matrix operations
โ”‚   โ””โ”€โ”€ analysis.rs     # Matrix analysis tools
โ”œโ”€โ”€ vector/             # Vector operations
โ”œโ”€โ”€ error.rs            # Error types and handling
โ”œโ”€โ”€ streaming.rs        # Streaming solver interface
โ”œโ”€โ”€ parallel.rs         # Parallel processing utilities
โ””โ”€โ”€ wasm.rs            # WebAssembly bindings

๐Ÿค Contributing

Contributions are welcome! Please see our Contributing Guide for details.

Development Checklist

  • Add tests for new functionality
  • Update documentation
  • Run cargo fmt and cargo clippy
  • Ensure all feature combinations compile
  • Add benchmarks for performance-critical code
  • Test WASM compatibility if applicable

๐Ÿ“„ License

This project is dual-licensed under MIT OR Apache-2.0. See LICENSE-MIT and LICENSE-APACHE for details.

๐Ÿ† Citation

If you use this solver in academic work, please cite:

@software{sublinear_solver_2024,
  title = {Sublinear-Time Solver: High-Performance Algorithms for Large Sparse Linear Systems},
  author = {rUv},
  year = {2024},
  url = {https://github.com/your-org/sublinear-time-solver},
  version = {0.1.0}
}

Made with โค๏ธ by rUv