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_cfamily (Implicitly Restarted Lanczos).
Structs§
- EigSolution
- The eigenpair returned by a driver, plus the diagnostic counters
ARPACK writes back into
iparamduring the iteration.