trace.hpp
Go to the documentation of this file.
1 #ifndef STAN_MATH_PRIM_MAT_FUN_TRACE_HPP
2 #define STAN_MATH_PRIM_MAT_FUN_TRACE_HPP
3 
5 
6 namespace stan {
7 namespace math {
8 
9 /**
10  * Returns the trace of the specified matrix. The trace
11  * is defined as the sum of the elements on the diagonal.
12  * The matrix is not required to be square. Returns 0 if
13  * matrix is empty.
14  *
15  * @param[in] m Specified matrix.
16  * @return Trace of the matrix.
17  */
18 template <typename T>
19 inline T trace(const Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>& m) {
20  return m.trace();
21 }
22 
23 template <typename T>
24 inline T trace(const T& m) {
25  return m;
26 }
27 } // namespace math
28 } // namespace stan
29 #endif
T trace(const Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > &m)
Definition: trace.hpp:19
double T
Definition: Xdiff_gwt.C:5