1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
use crate::{matrix::Matrix, number::Number};

/// # Diagonal matrix
impl Matrix {
    pub fn diag<T>(vec: &[T]) -> Matrix<T>
    where
        T: Number,
    {
        let n = vec.len();
        let mut new_matrix = Matrix::<T>::zeros(n, n);
        for i in 0..n {
            new_matrix[i][i] = vec[i];
        }

        new_matrix
    }
}