The package provides an interface to the Linear Algebra PACKage.
The underlying implementation of LAPACK to compile, if needed, and link to can be chosen among the following options:
An implementation can be chosen using the package’s features as follows:
```toml [dependencies]
lapack = { version = "0.11", default-features = false, features = ["accelerate"] }
lapack = { version = "0.11", default-features = false, features = ["netlib"] }
lapack = { version = "0.11", default-features = false, features = ["openblas"] }
lapack = { version = "0.11" } ```
```rust use lapack::c::*;
let n = 3; let mut a = vec![3.0, 1.0, 1.0, 1.0, 3.0, 1.0, 1.0, 1.0, 3.0]; let mut w = vec![0.0; n as usize];
let info = dsyev(Layout::ColumnMajor, b'V', b'U', n, &mut a, n, &mut w); assert_eq!(info, 0);
for (one, another) in w.iter().zip(&[2.0, 2.0, 5.0]) { assert!((one - another).abs() < 1e-14); } ```
```rust use lapack::fortran::*;
let n = 3; let mut a = vec![3.0, 1.0, 1.0, 1.0, 3.0, 1.0, 1.0, 1.0, 3.0]; let mut w = vec![0.0; n as usize]; let mut work = vec![0.0; 4 * n as usize]; let lwork = 4 * n; let mut info = 0;
dsyev(b'V', b'U', n, &mut a, n, &mut w, &mut work, lwork, &mut info); assert_eq!(info, 0);
for (one, another) in w.iter().zip(&[2.0, 2.0, 5.0]) { assert!((one - another).abs() < 1e-14); } ```
Your contribution is highly appreciated. Do not hesitate to open an issue or a pull request. Note that any contribution submitted for inclusion in the project will be licensed according to the terms given in LICENSE.md.