fn solve(&self, b: &[C64], sk: SolveKind) -> Vec<C64> {
        match sk {
            SolveKind::LU => {
                let lu = self.lu();
                let (p, q, l, u) = lu.extract();
                let mut v = b.to_vec();
                v.swap_with_perm(&p.into_iter().enumerate().collect());
                let z = l.forward_subs(&v);
                let mut y = u.back_subs(&z);
                y.swap_with_perm(&q.into_iter().enumerate().rev().collect());
                y
            }
            SolveKind::WAZ => {
                unimplemented!()
            }
        }
    }
Solve with Vector

# Solve options

* LU: Gaussian elimination with Complete pivoting LU (GECP)
* WAZ: Solve with WAZ decomposition
src/complex/matrix.rs