Implement matrix trace

This commit is contained in:
Nikita Lisitsa 2021-01-16 22:43:45 +03:00
parent 71bafff64d
commit 14c5fda1a7

View file

@ -285,6 +285,15 @@ namespace psemek::geom
return std::sqrt(frobenius_norm_sqr(m));
}
template <typename T, std::size_t R, std::size_t C>
T trace(matrix<T, R, C> const & m)
{
T r{0};
for (std::size_t i = 0; i < std::min(R, C); ++i)
r += m[i][i];
return r;
}
template <typename Stream, typename T, std::size_t R, std::size_t C>
Stream & operator << (Stream & os, matrix<T, R, C> const & m)
{