use russell_lab::*;
use russell_sparse::prelude::*;
use russell_sparse::StrError;
#[test]
fn test_complex_umfpack() -> Result<(), StrError> {
let n = 10;
let d = (n as f64) / 10.0;
let mut coo = CooMatrix::new(n, n, n, Sym::No)?;
let mut x_correct = Vector::new(n);
let mut rhs = Vector::new(n);
for k in 0..n {
let akk = 10.0 + (k as f64) * d;
coo.put(k, k, akk)?;
x_correct[k] = k as f64;
rhs[k] = akk * x_correct[k];
}
let mut x = Vector::new(n);
let mut solver = SolverUMFPACK::new()?;
solver.factorize(&coo, None)?;
solver.solve(&mut x, &rhs, false)?;
vec_approx_eq(&x, &x_correct, 1e-14);
Ok(())
}