Skip to main content

Crate arpack

Crate arpack 

Source
Expand description

Safe Rust wrapper around ARPACK-NG.

Provides safe drivers for the supported eigenproblem variants (real-symmetric Lanczos and complex Arnoldi). Callers that need to drive ARPACK manually should depend on arpack-sys directly.

§Example

Smallest eigenvalue of diag(1, 2, 3):

use arpack::{Options, smallest_eigenpair_f64};

let diag = [1.0_f64, 2.0, 3.0];
let n = diag.len();

let solution = smallest_eigenpair_f64(
    n,
    |x, y| {
        for i in 0..n {
            y[i] = diag[i] * x[i];
        }
    },
    &Options::default(),
)
.expect("ARPACK converged");

assert!((solution.eigenvalue - 1.0).abs() < 1e-9);

§Current limitations

Each driver exposes only the smallest eigenpair (nev = 1) with a fixed which selector — "SA" (smallest algebraic) for the real-symmetric Lanczos driver, "SR" (smallest real part) for the complex Arnoldi driver. Multi-eigenvalue extraction (nev > 1) and a configurable which selector are tracked at https://github.com/ultimatile/arpack-rs/issues/1.

Re-exports§

pub use error::Error;
pub use symmetric::Options;
pub use symmetric::smallest_eigenpair_f32;
pub use symmetric::smallest_eigenpair_f64;

Modules§

arnoldi
Arnoldi-iteration eigenvalue drivers (*naupd_c / *neupd_c).
error
symmetric
Real-symmetric eigenvalue drivers backed by the ARPACK-NG {s,d}{sa,se}upd_c family (Implicitly Restarted Lanczos).

Structs§

EigSolution
The eigenpair returned by a driver, plus the diagnostic counters ARPACK writes back into iparam during the iteration.