use crate::algebra::{
abstr::{AbsDiffEq, Field, Scalar},
linear::matrix::{General, Inverse, LUDec, LUDecomposition},
};
impl<T> Inverse<T> for General<T>
where
T: Field + Scalar + AbsDiffEq,
{
type Output = Self;
fn inv(&self) -> Result<General<T>, ()> {
self.inv_r()
}
}
impl<T> General<T>
where
T: Field + Scalar + AbsDiffEq,
{
pub fn inv_r(&self) -> Result<General<T>, ()> {
let lu_dec: LUDec<T> = self.dec_lu()?;
lu_dec.inv()
}
}