1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
use crate::algebra::abstr::{Field, Scalar};
use crate::algebra::linear::matrix::Determinant;
use crate::algebra::linear::matrix::UnitUpperTriangular;

impl<T> Determinant<T> for UnitUpperTriangular<T>
where
    T: Field + Scalar,
{
    /// Calculates the determinant
    ///
    /// # Example
    ///
    /// ```
    /// use mathru::algebra::linear::matrix::{Determinant, UnitUpperTriangular, General};
    /// use mathru::matrix;
    ///
    /// let a: UnitUpperTriangular<f64> = matrix![  1.0, 0.0;
    ///                                             5.0, 1.0].into();
    /// let det: f64 = a.det();
    /// assert_eq!(det, 1.0)
    /// ```
    fn det(&self) -> T {
        let (m, n) = self.matrix.dim();
        assert_eq!(m, n);

        T::one()
    }
}