rust_linear_algebra/matrix/
identity.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use super::Matrix;
use crate::num::One;

pub fn identity_mat<K>(cols: usize, rows: usize) -> Matrix<K>
where
    K: Copy + Default + One,
{
    let mut elements = vec![vec![K::default(); cols]; rows];

    let min_dim = usize::min(cols, rows);
    for i in 0..min_dim {
        elements[i][i] = K::one();
    }

    Matrix { elements }
}