faer 0.23.2

linear algebra library
Documentation
use crate::assert;
use crate::internal_prelude::*;

pub fn inverse_scratch<I: Index, T: ComplexField>(dim: usize, par: Par) -> StackReq {
	_ = par;
	super::solve::solve_in_place_scratch::<I, T>(dim, dim, par)
}

#[track_caller]
#[math]
pub fn inverse<I: Index, T: ComplexField>(
	out: MatMut<'_, T>,
	L: MatRef<'_, T>,
	diagonal: DiagRef<'_, T>,
	subdiagonal: DiagRef<'_, T>,
	perm: PermRef<'_, I>,
	par: Par,
	stack: &mut MemStack,
) {
	let n = L.nrows();
	assert!(all(
		out.nrows() == n,
		out.ncols() == n,
		L.nrows() == n,
		L.ncols() == n,
		diagonal.dim() == n,
		subdiagonal.dim() == n,
		perm.len() == n,
	));

	let mut out = out;
	out.fill(zero());
	out.rb_mut().diagonal_mut().fill(one());

	super::solve::solve_in_place(L, diagonal, subdiagonal, perm, out.rb_mut(), par, stack);
}