rust_linear_algebra/matrix/trace.rs
1use super::Matrix;
2use std::ops::Add;
3
4impl<K> Matrix<K>
5where
6 K: Copy + Default + Add<Output = K>,
7{
8 pub fn trace(&self) -> K {
9 if self.cols() != self.rows() {
10 panic!("Matrix must be a square");
11 }
12
13 (1..self.rows()).fold(self.elements[0][0], |acc, i| acc + self.elements[i][i])
14 }
15}