use super::{Matrix, call};
use crate::{__internal, Element, FloatElement, Vector};
impl<T: Element<D, D>, const D: usize> Matrix<T, D, D> {
pub const IDENTITY: Self = call!(Self(<T, D, D>::IDENTITY));
#[inline]
pub fn diagonal(self) -> Vector<T, D> { call!(Vector(<T, D, D>::diagonal(self.storage))) }
}
impl<T: FloatElement<D>, const D: usize> Matrix<T, D, D>
where
__internal::Dimension<D>: __internal::AtMost<4>,
{
#[inline]
pub fn inverse(self) -> Self { call!(Self(<T, D, D>::inverse(self.storage))) }
#[inline]
pub fn determinant(self) -> T { call!(<T, D, D>::determinant(self.storage)) }
}