Fn_trace

Functions

template<typename T1 >
arma_warn_unused T1::elem_type trace (const Base< typename T1::elem_type, T1 > &X)
 Immediate trace (sum of diagonal elements) of a square dense matrix.
template<typename T1 >
arma_warn_unused T1::elem_type trace (const Op< T1, op_diagmat > &X)

Function Documentation

template<typename T1 >
arma_warn_unused T1::elem_type trace ( const Base< typename T1::elem_type, T1 > &  X  )  [inline]

Immediate trace (sum of diagonal elements) of a square dense matrix.

Definition at line 26 of file fn_trace.hpp.

References Base< elem_type, derived >::get_ref().

00027   {
00028   arma_extra_debug_sigprint();
00029   
00030   typedef typename T1::elem_type eT;
00031   
00032   const Proxy<T1> A(X.get_ref());
00033 
00034   arma_debug_check( (A.n_rows != A.n_cols), "trace(): matrix must be square" );
00035   
00036   eT val = eT(0);
00037   
00038   for(u32 i=0; i<A.n_rows; ++i)
00039     {
00040     val += A.at(i,i);
00041     }
00042   
00043   return val;
00044   }

template<typename T1 >
arma_warn_unused T1::elem_type trace ( const Op< T1, op_diagmat > &  X  )  [inline]

Definition at line 52 of file fn_trace.hpp.

References Op< T1, op_type >::m, and diagmat_proxy< T1 >::n_elem.

00053   {
00054   arma_extra_debug_sigprint();
00055   
00056   typedef typename T1::elem_type eT;
00057   
00058   const diagmat_proxy<T1> A(X.m);
00059   
00060   const u32 N = A.n_elem;
00061   
00062   eT val = eT(0);
00063   
00064   for(u32 i=0; i<N; ++i)
00065     {
00066     val += A[i];
00067     }
00068   
00069   return val;
00070   }