use faer::sparse::linalg::triangular_solve;
use faer::{Conj, MatMut, Par};
use faer_traits::{ComplexField, Index};
use super::numeric::Ic0;
pub(crate) fn solve_in_place<I, T>(ic: &Ic0<I, T>, conj: Conj, rhs: MatMut<'_, T>, par: Par)
where
I: Index,
T: ComplexField,
{
let l = ic.l_view();
let mut rhs = rhs;
match conj {
Conj::No => {
triangular_solve::solve_lower_triangular_in_place(l, Conj::No, rhs.as_mut(), par);
triangular_solve::solve_lower_triangular_transpose_in_place(
l,
Conj::Yes,
rhs.as_mut(),
par,
);
}
Conj::Yes => {
triangular_solve::solve_lower_triangular_in_place(l, Conj::Yes, rhs.as_mut(), par);
triangular_solve::solve_lower_triangular_transpose_in_place(
l,
Conj::No,
rhs.as_mut(),
par,
);
}
}
}