1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
use core::ops::{Mul, Sub};

/// # Example
/// ```
/// let mut m = mat2::new_identity::<f32>();
/// assert_eq!(mat2::det(&m), 1_f32);
/// ```
#[inline]
pub fn det<T>(out: &[T; 4]) -> T
where
    T: Sub<T, Output = T>,
    for<'a, 'b> &'a T: Mul<&'b T, Output = T>,
{
    &out[0] * &out[3] - &out[2] * &out[1]
}