Op_sum


Classes

class  op_sum
 Class for finding sums of values in a matrix (e.g. along rows or columns). More...

Functions

template<typename T1 >
static void op_sum::apply (Mat< typename T1::elem_type > &out, const Op< T1, op_sum > &in)
 Immediate sum of elements of a matrix along a specified dimension (either rows or columns). The result is stored in a dense matrix that has either one column or one row. See the sum() function for more details.

Function Documentation

template<typename T1 >
void op_sum::apply ( Mat< typename T1::elem_type > &  out,
const Op< T1, op_sum > &  in 
) [inline, static, inherited]

Immediate sum of elements of a matrix along a specified dimension (either rows or columns). The result is stored in a dense matrix that has either one column or one row. See the sum() function for more details.

Definition at line 26 of file op_sum_meat.hpp.

References Mat< eT >::at(), Op< T1, op_type >::aux_u32_a, Op< T1, op_type >::m, Mat< eT >::n_cols, Mat< eT >::n_rows, and Mat< eT >::set_size().

00027   {
00028   arma_extra_debug_sigprint();
00029   
00030   const u32 dim = in.aux_u32_a;
00031   arma_debug_check( (dim > 1), "op_sum::apply(): incorrect usage. dim must be 0 or 1");
00032   
00033   typedef typename T1::elem_type eT;
00034   
00035   const unwrap_check<T1> tmp(in.m, out);
00036   const Mat<eT>& X = tmp.M;
00037   
00038   if(dim == 0)  // column-wise sum
00039     {
00040     out.set_size(1, X.n_cols);
00041     
00042     for(u32 col=0; col<X.n_cols; ++col)
00043       {
00044       eT tmp_val = eT(0);
00045       for(u32 row=0; row<X.n_rows; ++row)
00046         {
00047         tmp_val += X.at(row,col);
00048         }
00049     
00050       out.at(0,col) = tmp_val;
00051       }
00052     }
00053   else
00054   if(dim == 1)  // row-wise sum
00055     {
00056     out.set_size(X.n_rows, 1);
00057     
00058     for(u32 row=0; row<X.n_rows; ++row)
00059       {
00060       eT tmp_val = eT(0);
00061       for(u32 col=0; col<X.n_cols; ++col)
00062         {
00063         tmp_val += X.at(row,col);
00064         }
00065     
00066       out.at(row,0) = tmp_val;
00067       }
00068     
00069     }
00070   
00071   }