Op_randn

Classes

class  op_randn
 'generate matrix with random values' operation More...

Functions

template<typename eT >
static eT op_randn::randn ()
template<typename eT >
static void op_randn::direct_randn (eT *x, const u32 n_elem)
template<typename T >
static void op_randn::direct_randn (std::complex< T > *x, const u32 n_elem)
template<typename T1 >
static void op_randn::apply (Mat< typename T1::elem_type > &out, const Op< T1, op_randn > &in)
template<typename eT >
static void op_randn::apply (Cube< eT > &out, const OpCube< Cube< eT >, op_randn > &in)

Function Documentation

template<typename eT >
eT op_randn::randn (  )  [inline, static, private, inherited]

Definition at line 34 of file op_randn_meat.hpp.

References rand().

00035   {
00036   const u32 N = 12;
00037   eT acc = eT(0);
00038   
00039   for(u32 i=0; i<N; ++i)
00040     {
00041     acc += eT(std::rand()) / eT(RAND_MAX);
00042     }
00043   
00044   return acc/eT(N) - eT(0.5);
00045   }

template<typename eT >
void op_randn::direct_randn ( eT *  x,
const u32  n_elem 
) [inline, static, private, inherited]

Definition at line 52 of file op_randn_meat.hpp.

Referenced by apply().

00053   {
00054   arma_extra_debug_sigprint();
00055   
00056   for(u32 i=0; i<n_elem; ++i)
00057     {
00058     x[i] = eT(op_randn::randn<eT>());
00059     }
00060   
00061   }

template<typename T >
void op_randn::direct_randn ( std::complex< T > *  x,
const u32  n_elem 
) [inline, static, private, inherited]

Definition at line 68 of file op_randn_meat.hpp.

00069   {
00070   arma_extra_debug_sigprint();
00071   
00072   for(u32 i=0; i<n_elem; ++i)
00073     {
00074     const T a = op_randn::randn<T>();
00075     const T b = op_randn::randn<T>();
00076 
00077     x[i] = std::complex<T>(a,b);
00078     }
00079   }

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

Definition at line 86 of file op_randn_meat.hpp.

References Op< T1, op_type >::aux_u32_a, Op< T1, op_type >::aux_u32_b, direct_randn(), Mat< eT >::memptr(), Mat< eT >::n_elem, and Mat< eT >::set_size().

00087   {
00088   arma_extra_debug_sigprint();
00089   
00090   out.set_size(in.aux_u32_a, in.aux_u32_b);
00091   
00092   op_randn::direct_randn(out.memptr(), out.n_elem);
00093   }

template<typename eT >
void op_randn::apply ( Cube< eT > &  out,
const OpCube< Cube< eT >, op_randn > &  in 
) [inline, static, inherited]

Definition at line 100 of file op_randn_meat.hpp.

References direct_randn(), Cube< eT >::memptr(), Cube< eT >::n_elem, and Cube< eT >::set_size().

00101   {
00102   arma_extra_debug_sigprint();
00103   
00104   out.set_size(in.aux_u32_a, in.aux_u32_b, in.aux_u32_c);
00105   
00106   op_randn::direct_randn(out.memptr(), out.n_elem);
00107   }