Classes | Functions

Subview_cube

//! More...

Classes

class  subview_cube< eT >
 Class for storing data required to construct or apply operations to a subcube //! (i.e. where the subcube starts and ends as well as a reference/pointer to the original cube),. More...

Functions

 subview_cube::~subview_cube ()
arma_inline subview_cube::subview_cube (const Cube< eT > &in_m, const u32 in_row1, const u32 in_col1, const u32 in_slice1, const u32 in_row2, const u32 in_col2, const u32 in_slice2)
arma_inline subview_cube::subview_cube (Cube< eT > &in_m, const u32 in_row1, const u32 in_col1, const u32 in_slice1, const u32 in_row2, const u32 in_col2, const u32 in_slice2)
void subview_cube::operator+= (const eT val)
void subview_cube::operator-= (const eT val)
void subview_cube::operator*= (const eT val)
void subview_cube::operator/= (const eT val)
template<typename T1 >
void subview_cube::operator= (const BaseCube< eT, T1 > &x)
template<typename T1 >
void subview_cube::operator+= (const BaseCube< eT, T1 > &x)
template<typename T1 >
void subview_cube::operator-= (const BaseCube< eT, T1 > &x)
template<typename T1 >
void subview_cube::operator%= (const BaseCube< eT, T1 > &x)
template<typename T1 >
void subview_cube::operator/= (const BaseCube< eT, T1 > &x)
void subview_cube::operator= (const subview_cube &x)
 x.subcube(...) = y.subcube(...)
void subview_cube::operator+= (const subview_cube &x)
void subview_cube::operator-= (const subview_cube &x)
void subview_cube::operator%= (const subview_cube &x)
void subview_cube::operator/= (const subview_cube &x)
template<typename T1 >
void subview_cube::operator= (const Base< eT, T1 > &x)
template<typename T1 >
void subview_cube::operator+= (const Base< eT, T1 > &x)
template<typename T1 >
void subview_cube::operator-= (const Base< eT, T1 > &x)
template<typename T1 >
void subview_cube::operator%= (const Base< eT, T1 > &x)
template<typename T1 >
void subview_cube::operator/= (const Base< eT, T1 > &x)
void subview_cube::fill (const eT val)
void subview_cube::zeros ()
void subview_cube::ones ()
arma_inline eT & subview_cube::operator[] (const u32 i)
arma_inline eT subview_cube::operator[] (const u32 i) const
arma_inline eT & subview_cube::operator() (const u32 i)
arma_inline eT subview_cube::operator() (const u32 i) const
arma_inline eT & subview_cube::operator() (const u32 in_row, const u32 in_col, const u32 in_slice)
arma_inline eT subview_cube::operator() (const u32 in_row, const u32 in_col, const u32 in_slice) const
arma_inline eT & subview_cube::at (const u32 in_row, const u32 in_col, const u32 in_slice)
arma_inline eT subview_cube::at (const u32 in_row, const u32 in_col, const u32 in_slice) const
arma_inline eT * subview_cube::slice_colptr (const u32 in_slice, const u32 in_col)
arma_inline const eT * subview_cube::slice_colptr (const u32 in_slice, const u32 in_col) const
bool subview_cube::check_overlap (const subview_cube &x) const
bool subview_cube::check_overlap (const Mat< eT > &x) const
static void subview_cube::extract (Cube< eT > &out, const subview_cube &in)
 cube X = Y.subcube(...)
static void subview_cube::extract (Mat< eT > &out, const subview_cube &in)
 mat X = Y.subcube(...)
static void subview_cube::plus_inplace (Cube< eT > &out, const subview_cube &in)
 cube X += Y.subcube(...)
static void subview_cube::minus_inplace (Cube< eT > &out, const subview_cube &in)
 cube X -= Y.subcube(...)
static void subview_cube::schur_inplace (Cube< eT > &out, const subview_cube &in)
 cube X = Y.subcube(...)
static void subview_cube::div_inplace (Cube< eT > &out, const subview_cube &in)
 cube X /= Y.subcube(...)
static void subview_cube::plus_inplace (Mat< eT > &out, const subview_cube &in)
 mat X += Y.subcube(...)
static void subview_cube::minus_inplace (Mat< eT > &out, const subview_cube &in)
 mat X -= Y.subcube(...)
static void subview_cube::schur_inplace (Mat< eT > &out, const subview_cube &in)
 mat X = Y.subcube(...)
static void subview_cube::div_inplace (Mat< eT > &out, const subview_cube &in)
 mat X /= Y.subcube(...)

Detailed Description

//!


Function Documentation

template<typename eT >
subview_cube< eT >::~subview_cube (  )  [inline, inherited]

Definition at line 23 of file subview_cube_meat.hpp.

  {
  arma_extra_debug_sigprint();
  }

template<typename eT >
arma_inline subview_cube< eT >::subview_cube ( const Cube< eT > &  in_m,
const u32  in_row1,
const u32  in_col1,
const u32  in_slice1,
const u32  in_row2,
const u32  in_col2,
const u32  in_slice2 
) [protected, inherited]

Definition at line 33 of file subview_cube_meat.hpp.

  : m           (in_m)
  , m_ptr       (0)
  , aux_row1    (in_row1)
  , aux_col1    (in_col1)
  , aux_slice1  (in_slice1)
  , aux_row2    (in_row2)
  , aux_col2    (in_col2)
  , aux_slice2  (in_slice2)
  , n_rows      (1 + in_row2 - in_row1)
  , n_cols      (1 + in_col2 - in_col1)
  , n_elem_slice(n_rows * n_cols)
  , n_slices    (1 + in_slice2 - in_slice1)
  , n_elem      (n_elem_slice * n_slices)
  {
  arma_extra_debug_sigprint();
  }

template<typename eT >
arma_inline subview_cube< eT >::subview_cube ( Cube< eT > &  in_m,
const u32  in_row1,
const u32  in_col1,
const u32  in_slice1,
const u32  in_row2,
const u32  in_col2,
const u32  in_slice2 
) [protected, inherited]

Definition at line 64 of file subview_cube_meat.hpp.

  : m           (in_m)
  , m_ptr       (&in_m)
  , aux_row1    (in_row1)
  , aux_col1    (in_col1)
  , aux_slice1  (in_slice1)
  , aux_row2    (in_row2)
  , aux_col2    (in_col2)
  , aux_slice2  (in_slice2)
  , n_rows      (1 + in_row2 - in_row1)
  , n_cols      (1 + in_col2 - in_col1)
  , n_elem_slice(n_rows * n_cols)
  , n_slices    (1 + in_slice2 - in_slice1)
  , n_elem      (n_elem_slice * n_slices)
  {
  arma_extra_debug_sigprint();
  }

template<typename eT >
void subview_cube< eT >::operator+= ( const eT  val  )  [inline, inherited]

Definition at line 95 of file subview_cube_meat.hpp.

References subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, subview_cube< eT >::n_slices, and subview_cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  for(u32 slice = 0; slice < n_slices; ++slice)
    {
    for(u32 col = 0; col < n_cols; ++col)
      {
      eT* coldata = slice_colptr(slice,col);
      
      for(u32 row = 0; row < n_rows; ++row)
        {
        coldata[row] += val;
        }
      
      }
    }

  }

template<typename eT >
void subview_cube< eT >::operator-= ( const eT  val  )  [inline, inherited]

Definition at line 120 of file subview_cube_meat.hpp.

References subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, subview_cube< eT >::n_slices, and subview_cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  for(u32 slice = 0; slice < n_slices; ++slice)
    {
    for(u32 col = 0; col<n_cols; ++col)
      {
      eT* coldata = slice_colptr(slice,col);
      
      for(u32 row = 0; row<n_rows; ++row)
        {
        coldata[row] -= val;
        }
      
      }
    }
  }

template<typename eT >
void subview_cube< eT >::operator*= ( const eT  val  )  [inline, inherited]

Definition at line 144 of file subview_cube_meat.hpp.

References subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, subview_cube< eT >::n_slices, and subview_cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  for(u32 slice = 0; slice < n_slices; ++slice)
    {
    for(u32 col = 0; col<n_cols; ++col)
      {
      eT* coldata = slice_colptr(slice,col);
      
      for(u32 row = 0; row<n_rows; ++row)
        {
        coldata[row] *= val;
        }
      
      }
    }  
  }

template<typename eT >
void subview_cube< eT >::operator/= ( const eT  val  )  [inline, inherited]

Definition at line 168 of file subview_cube_meat.hpp.

References subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, subview_cube< eT >::n_slices, and subview_cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  for(u32 slice = 0; slice < n_slices; ++slice)
    {
    for(u32 col = 0; col<n_cols; ++col)
      {
      eT* coldata = slice_colptr(slice,col);
      
      for(u32 row = 0; row<n_rows; ++row)
        {
        coldata[row] /= val;
        }
      
      }
    }  
  }

template<typename eT >
template<typename T1 >
void subview_cube< eT >::operator= ( const BaseCube< eT, T1 > &  x  )  [inline, inherited]

Definition at line 193 of file subview_cube_meat.hpp.

References BaseCube< elem_type, derived >::get_ref(), subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, subview_cube< eT >::n_slices, and subview_cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  const unwrap_cube<T1> tmp(in.get_ref());
  
  const Cube<eT>&         x = tmp.M;
        subview_cube<eT>& t = *this;
  
  arma_debug_assert_same_size(t, x, "copy into subcube");
  
  
  for(u32 slice = 0; slice < t.n_slices; ++slice)
    {
    for(u32 col = 0; col < t.n_cols; ++col)
      {
            eT* t_coldata = t.slice_colptr(slice,col);
      const eT* x_coldata = x.slice_colptr(slice,col);
      
      for(u32 row = 0; row < t.n_rows; ++row)
        {
        t_coldata[row] = x_coldata[row];
        }
        
      }
    }
  }

template<typename eT >
template<typename T1 >
void subview_cube< eT >::operator+= ( const BaseCube< eT, T1 > &  x  )  [inline, inherited]

Definition at line 227 of file subview_cube_meat.hpp.

References BaseCube< elem_type, derived >::get_ref(), subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, subview_cube< eT >::n_slices, and subview_cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  const unwrap_cube<T1> tmp(in.get_ref());
  
  const Cube<eT>&         x = tmp.M;
        subview_cube<eT>& t = *this;
  
  arma_debug_assert_same_size(t, x, "cube addition");
  
  for(u32 slice = 0; slice < t.n_slices; ++slice)
    {
    for(u32 col = 0; col < t.n_cols; ++col)
      {
            eT* t_coldata = t.slice_colptr(slice,col);
      const eT* x_coldata = x.slice_colptr(slice,col);
      
      for(u32 row = 0; row < t.n_rows; ++row)
        {
        t_coldata[row] += x_coldata[row];
        }
      }
    }
  
  }

template<typename eT >
template<typename T1 >
void subview_cube< eT >::operator-= ( const BaseCube< eT, T1 > &  x  )  [inline, inherited]

Definition at line 260 of file subview_cube_meat.hpp.

References BaseCube< elem_type, derived >::get_ref(), subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, subview_cube< eT >::n_slices, and subview_cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  const unwrap_cube<T1> tmp(in.get_ref());
  
  const Cube<eT>&         x = tmp.M;
        subview_cube<eT>& t = *this;
  
  arma_debug_assert_same_size(t, x, "cube subtraction");
  
  
  for(u32 slice = 0; slice < t.n_slices; ++slice)
    {
    for(u32 col = 0; col < t.n_cols; ++col)
      {
            eT* t_coldata = t.slice_colptr(slice,col);
      const eT* x_coldata = x.slice_colptr(slice,col);
      
      for(u32 row = 0; row < t.n_rows; ++row)
        {
        t_coldata[row] -= x_coldata[row];
        }
      }
    }  
  }

template<typename eT >
template<typename T1 >
void subview_cube< eT >::operator%= ( const BaseCube< eT, T1 > &  x  )  [inline, inherited]

Definition at line 293 of file subview_cube_meat.hpp.

References BaseCube< elem_type, derived >::get_ref(), subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, subview_cube< eT >::n_slices, and subview_cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  const unwrap_cube<T1> tmp(in.get_ref());
  
  const Cube<eT>&         x = tmp.M;
        subview_cube<eT>& t = *this;
  
  arma_debug_assert_same_size(t, x, "cube schur product");
  
  for(u32 slice = 0; slice < t.n_slices; ++slice)
    {
    for(u32 col = 0; col<t.n_cols; ++col)
      {
            eT* t_coldata = t.slice_colptr(slice,col);
      const eT* x_coldata = x.slice_colptr(slice,col);
      
      for(u32 row = 0; row<t.n_rows; ++row)
        {
        t_coldata[row] *= x_coldata[row];
        }
      }
    }
  
  }

template<typename eT >
template<typename T1 >
void subview_cube< eT >::operator/= ( const BaseCube< eT, T1 > &  x  )  [inline, inherited]

Definition at line 326 of file subview_cube_meat.hpp.

References BaseCube< elem_type, derived >::get_ref(), subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, subview_cube< eT >::n_slices, and subview_cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  const unwrap_cube<T1> tmp(in.get_ref());
  
  const Cube<eT>&         x = tmp.M;
        subview_cube<eT>& t = *this;
  
  arma_debug_assert_same_size(t, x, "element-wise cube division");
  
  
  for(u32 slice = 0; slice < t.n_slices; ++slice)
    {
    for(u32 col = 0; col<t.n_cols; ++col)
      {
            eT* t_coldata = t.slice_colptr(slice,col);
      const eT* x_coldata = x.slice_colptr(slice,col);
      
      for(u32 row = 0; row<t.n_rows; ++row)
        {
        t_coldata[row] /= x_coldata[row];
        }
      }
    }
  
  }

template<typename eT >
void subview_cube< eT >::operator= ( const subview_cube< eT > &  x  )  [inline, inherited]

x.subcube(...) = y.subcube(...)

Definition at line 360 of file subview_cube_meat.hpp.

References subview_cube< eT >::aux_col1, subview_cube< eT >::aux_col2, subview_cube< eT >::aux_row1, subview_cube< eT >::aux_row2, subview_cube< eT >::aux_slice1, subview_cube< eT >::aux_slice2, subview_cube< eT >::check_overlap(), subview_cube< eT >::m, subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, subview_cube< eT >::n_slices, and subview_cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  const bool overlap = check_overlap(x_in);
  
        Cube<eT>*         tmp_cube         = overlap ? new Cube<eT>(x_in.m) : 0;
  const subview_cube<eT>* tmp_subview_cube = overlap ? new subview_cube<eT>(*tmp_cube, x_in.aux_row1, x_in.aux_col1, x_in.aux_slice1, x_in.aux_row2, x_in.aux_col2, x_in.aux_slice2) : 0;
  const subview_cube<eT>& x                = overlap ? (*tmp_subview_cube) : x_in;
  
  subview_cube<eT>& t = *this;
  
  arma_debug_assert_same_size(t, x, "copy into subcube");
  
  
  for(u32 slice = 0; slice < t.n_slices; ++slice)
    {
    for(u32 col = 0; col < t.n_cols; ++col)
      {
            eT* t_coldata = t.slice_colptr(slice,col);
      const eT* x_coldata = x.slice_colptr(slice,col);
      
      for(u32 row = 0; row < t.n_rows; ++row)
        {
        t_coldata[row] = x_coldata[row];
        }
      }
    }
    
  if(overlap)
    {
    delete tmp_subview_cube;
    delete tmp_cube;
    }
  
  }

template<typename eT >
void subview_cube< eT >::operator+= ( const subview_cube< eT > &  x  )  [inline, inherited]

Definition at line 402 of file subview_cube_meat.hpp.

References subview_cube< eT >::aux_col1, subview_cube< eT >::aux_col2, subview_cube< eT >::aux_row1, subview_cube< eT >::aux_row2, subview_cube< eT >::aux_slice1, subview_cube< eT >::aux_slice2, subview_cube< eT >::check_overlap(), subview_cube< eT >::m, subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, subview_cube< eT >::n_slices, and subview_cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  const bool overlap = check_overlap(x_in);
  
        Cube<eT>*         tmp_cube         = overlap ? new Cube<eT>(x_in.m) : 0;
  const subview_cube<eT>* tmp_subview_cube = overlap ? new subview_cube<eT>(*tmp_cube, x_in.aux_row1, x_in.aux_col1, x_in.aux_slice1, x_in.aux_row2, x_in.aux_col2, x_in.aux_slice2) : 0;
  const subview_cube<eT>& x                = overlap ? (*tmp_subview_cube) : x_in;
  
  subview_cube<eT>& t = *this;
  
  arma_debug_assert_same_size(t, x, "cube addition");
  
  
  for(u32 slice = 0; slice < t.n_slices; ++slice)
    {
    for(u32 col = 0; col < t.n_cols; ++col)
      {
            eT* t_coldata = t.slice_colptr(slice,col);
      const eT* x_coldata = x.slice_colptr(slice,col);
      
      for(u32 row = 0; row < t.n_rows; ++row)
        {
        t_coldata[row] += x_coldata[row];
        }
      }
    }
    
  if(overlap)
    {
    delete tmp_subview_cube;
    delete tmp_cube;
    }
  
  }

template<typename eT >
void subview_cube< eT >::operator-= ( const subview_cube< eT > &  x  )  [inline, inherited]

Definition at line 444 of file subview_cube_meat.hpp.

References subview_cube< eT >::aux_col1, subview_cube< eT >::aux_col2, subview_cube< eT >::aux_row1, subview_cube< eT >::aux_row2, subview_cube< eT >::aux_slice1, subview_cube< eT >::aux_slice2, subview_cube< eT >::check_overlap(), subview_cube< eT >::m, subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, subview_cube< eT >::n_slices, and subview_cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  const bool overlap = check_overlap(x_in);
  
        Cube<eT>*         tmp_cube         = overlap ? new Cube<eT>(x_in.m) : 0;
  const subview_cube<eT>* tmp_subview_cube = overlap ? new subview_cube<eT>(*tmp_cube, x_in.aux_row1, x_in.aux_col1, x_in.aux_slice1, x_in.aux_row2, x_in.aux_col2, x_in.aux_slice2) : 0;
  const subview_cube<eT>& x                = overlap ? (*tmp_subview_cube) : x_in;
  
  subview_cube<eT>& t = *this;
  
  arma_debug_assert_same_size(t, x, "cube subtraction");
  
  
  for(u32 slice = 0; slice < t.n_slices; ++slice)
    {
    for(u32 col = 0; col < t.n_cols; ++col)
      {
            eT* t_coldata = t.slice_colptr(slice,col);
      const eT* x_coldata = x.slice_colptr(slice,col);
      
      for(u32 row = 0; row < t.n_rows; ++row)
        {
        t_coldata[row] -= x_coldata[row];
        }
      }
    }
    
  if(overlap)
    {
    delete tmp_subview_cube;
    delete tmp_cube;
    }
    
  }

template<typename eT >
void subview_cube< eT >::operator%= ( const subview_cube< eT > &  x  )  [inline, inherited]

Definition at line 486 of file subview_cube_meat.hpp.

References subview_cube< eT >::aux_col1, subview_cube< eT >::aux_col2, subview_cube< eT >::aux_row1, subview_cube< eT >::aux_row2, subview_cube< eT >::aux_slice1, subview_cube< eT >::aux_slice2, subview_cube< eT >::check_overlap(), subview_cube< eT >::m, subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, subview_cube< eT >::n_slices, and subview_cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  const bool overlap = check_overlap(x_in);
  
        Cube<eT>*         tmp_cube         = overlap ? new Cube<eT>(x_in.m) : 0;
  const subview_cube<eT>* tmp_subview_cube = overlap ? new subview_cube<eT>(*tmp_cube, x_in.aux_row1, x_in.aux_col1, x_in.aux_slice1, x_in.aux_row2, x_in.aux_col2, x_in.aux_slice2) : 0;
  const subview_cube<eT>& x                = overlap ? (*tmp_subview_cube) : x_in;
  
  subview_cube<eT>& t = *this;
  
  arma_debug_assert_same_size(t, x, "element-wise cube multiplication");
  
  
  for(u32 slice = 0; slice < t.n_slices; ++slice)
    {
    for(u32 col = 0; col < t.n_cols; ++col)
      {
            eT* t_coldata = t.slice_colptr(slice,col);
      const eT* x_coldata = x.slice_colptr(slice,col);
      
      for(u32 row = 0; row < t.n_rows; ++row)
        {
        t_coldata[row] *= x_coldata[row];
        }
      }
    }
    
  if(overlap)
    {
    delete tmp_subview_cube;
    delete tmp_cube;
    }
  
  }

template<typename eT >
void subview_cube< eT >::operator/= ( const subview_cube< eT > &  x  )  [inline, inherited]

Definition at line 528 of file subview_cube_meat.hpp.

References subview_cube< eT >::aux_col1, subview_cube< eT >::aux_col2, subview_cube< eT >::aux_row1, subview_cube< eT >::aux_row2, subview_cube< eT >::aux_slice1, subview_cube< eT >::aux_slice2, subview_cube< eT >::check_overlap(), subview_cube< eT >::m, subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, subview_cube< eT >::n_slices, and subview_cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  const bool overlap = check_overlap(x_in);
  
        Cube<eT>*         tmp_cube         = overlap ? new Cube<eT>(x_in.m) : 0;
  const subview_cube<eT>* tmp_subview_cube = overlap ? new subview_cube<eT>(*tmp_cube, x_in.aux_row1, x_in.aux_col1, x_in.aux_slice1, x_in.aux_row2, x_in.aux_col2, x_in.aux_slice2) : 0;
  const subview_cube<eT>& x                = overlap ? (*tmp_subview_cube) : x_in;
  
  subview_cube<eT>& t = *this;
  
  arma_debug_assert_same_size(t, x, "element-wise cube division");
  
  
  for(u32 slice = 0; slice < t.n_slices; ++slice)
    {
    for(u32 col = 0; col < t.n_cols; ++col)
      {
            eT* t_coldata = t.slice_colptr(slice,col);
      const eT* x_coldata = x.slice_colptr(slice,col);
      
      for(u32 row = 0; row < t.n_rows; ++row)
        {
        t_coldata[row] /= x_coldata[row];
        }
      }
    }
    
  if(overlap)
    {
    delete tmp_subview_cube;
    delete tmp_cube;
    }
  
  }

template<typename eT >
template<typename T1 >
void subview_cube< eT >::operator= ( const Base< eT, T1 > &  x  )  [inline, inherited]

Definition at line 571 of file subview_cube_meat.hpp.

References subview_cube< eT >::aux_slice1, Base< elem_type, derived >::get_ref(), subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, and subview_cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  const unwrap<T1> tmp(in.get_ref());
  
  const Mat<eT>&          x = tmp.M;
        subview_cube<eT>& t = *this;
  
  arma_debug_assert_same_size(t, x, "copy into subcube");
  
  
  for(u32 col = 0; col < t.n_cols; ++col)
    {
          eT* t_coldata = t.slice_colptr(t.aux_slice1, col);
    const eT* x_coldata = x.colptr(col);
    
    for(u32 row = 0; row < t.n_rows; ++row)
      {
      t_coldata[row] = x_coldata[row];
      }
      
    }
  }

template<typename eT >
template<typename T1 >
void subview_cube< eT >::operator+= ( const Base< eT, T1 > &  x  )  [inline, inherited]

Definition at line 602 of file subview_cube_meat.hpp.

References subview_cube< eT >::aux_slice1, Base< elem_type, derived >::get_ref(), subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, and subview_cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  const unwrap<T1> tmp(in.get_ref());
  
  const Mat<eT>&          x = tmp.M;
        subview_cube<eT>& t = *this;
  
  arma_debug_assert_same_size(t, x, "cube addition");
  
  for(u32 col = 0; col < t.n_cols; ++col)
    {
          eT* t_coldata = t.slice_colptr(t.aux_slice1, col);
    const eT* x_coldata = x.colptr(col);
    
    for(u32 row = 0; row < t.n_rows; ++row)
      {
      t_coldata[row] += x_coldata[row];
      }
    }
  }

template<typename eT >
template<typename T1 >
void subview_cube< eT >::operator-= ( const Base< eT, T1 > &  x  )  [inline, inherited]

Definition at line 631 of file subview_cube_meat.hpp.

References subview_cube< eT >::aux_slice1, Base< elem_type, derived >::get_ref(), subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, and subview_cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  const unwrap<T1> tmp(in.get_ref());
  
  const Mat<eT>&          x = tmp.M;
        subview_cube<eT>& t = *this;
  
  arma_debug_assert_same_size(t, x, "cube subtraction");
  
  for(u32 col = 0; col < t.n_cols; ++col)
    {
          eT* t_coldata = t.slice_colptr(t.aux_slice1, col);
    const eT* x_coldata = x.colptr(col);
    
    for(u32 row = 0; row < t.n_rows; ++row)
      {
      t_coldata[row] -= x_coldata[row];
      }
    }
  }

template<typename eT >
template<typename T1 >
void subview_cube< eT >::operator%= ( const Base< eT, T1 > &  x  )  [inline, inherited]

Definition at line 660 of file subview_cube_meat.hpp.

References subview_cube< eT >::aux_slice1, Base< elem_type, derived >::get_ref(), subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, and subview_cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  const unwrap<T1> tmp(in.get_ref());
  
  const Mat<eT>&          x = tmp.M;
        subview_cube<eT>& t = *this;
  
  arma_debug_assert_same_size(t, x, "cube schur product");
  
  for(u32 col = 0; col<t.n_cols; ++col)
    {
          eT* t_coldata = t.slice_colptr(t.aux_slice1, col);
    const eT* x_coldata = x.colptr(col);
    
    for(u32 row = 0; row<t.n_rows; ++row)
      {
      t_coldata[row] *= x_coldata[row];
      }
    }
  }

template<typename eT >
template<typename T1 >
void subview_cube< eT >::operator/= ( const Base< eT, T1 > &  x  )  [inline, inherited]

Definition at line 689 of file subview_cube_meat.hpp.

References subview_cube< eT >::aux_slice1, Base< elem_type, derived >::get_ref(), subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, and subview_cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  const unwrap<T1> tmp(in.get_ref());
  
  const Mat<eT>&          x = tmp.M;
        subview_cube<eT>& t = *this;
  
  arma_debug_assert_same_size(t, x, "element-wise cube division");
  
  
  for(u32 col = 0; col<t.n_cols; ++col)
    {
          eT* t_coldata = t.slice_colptr(t.aux_slice1, col);
    const eT* x_coldata = x.colptr(col);
    
    for(u32 row = 0; row<t.n_rows; ++row)
      {
      t_coldata[row] /= x_coldata[row];
      }
    }
  }

template<typename eT >
void subview_cube< eT >::fill ( const eT  val  )  [inline, inherited]

Definition at line 718 of file subview_cube_meat.hpp.

References subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, subview_cube< eT >::n_slices, and subview_cube< eT >::slice_colptr().

Referenced by subview_cube< eT >::ones(), and subview_cube< eT >::zeros().

  {
  arma_extra_debug_sigprint();

  for(u32 slice = 0; slice < n_slices; ++slice)
    {
    for(u32 col = 0; col < n_cols; ++col)
      {
      eT* coldata = slice_colptr(slice,col);
      
      for(u32 row = 0; row < n_rows; ++row)
        {
        coldata[row] = val;
        }
      }
    }
  
  }

template<typename eT >
void subview_cube< eT >::zeros (  )  [inline, inherited]

Definition at line 742 of file subview_cube_meat.hpp.

References subview_cube< eT >::fill().

  {
  arma_extra_debug_sigprint();
  
  fill(eT(0));
  }

template<typename eT >
void subview_cube< eT >::ones (  )  [inline, inherited]

Definition at line 754 of file subview_cube_meat.hpp.

References subview_cube< eT >::fill().

  {
  arma_extra_debug_sigprint();
  
  fill(eT(1));
  }

template<typename eT >
arma_inline eT & subview_cube< eT >::operator[] ( const u32  i  )  [inherited]

Definition at line 766 of file subview_cube_meat.hpp.

References arma_check(), subview_cube< eT >::aux_col1, subview_cube< eT >::aux_row1, subview_cube< eT >::aux_slice1, subview_cube< eT >::m, subview_cube< eT >::m_ptr, subview_cube< eT >::n_elem_slice, subview_cube< eT >::n_rows, and access::rw().

  {
  arma_check( (m_ptr == 0), "subview_cube::operator[]: cube is read-only");
  
  const u32 in_slice = i / n_elem_slice;
  const u32 offset   = in_slice * n_elem_slice;
  const u32 j        = i - offset;
  
  const u32 in_col   = j / n_rows;
  const u32 in_row   = j % n_rows;

  const u32 index = (in_slice + aux_slice1)*m.n_elem_slice + (in_col + aux_col1)*m.n_rows + aux_row1 + in_row;
  return access::rw( (*m_ptr).mem[index] );
  }

template<typename eT >
arma_inline eT subview_cube< eT >::operator[] ( const u32  i  )  const [inherited]

Definition at line 786 of file subview_cube_meat.hpp.

References subview_cube< eT >::aux_col1, subview_cube< eT >::aux_row1, subview_cube< eT >::aux_slice1, subview_cube< eT >::m, subview_cube< eT >::n_elem_slice, and subview_cube< eT >::n_rows.

  {
  const u32 in_slice = i / n_elem_slice;
  const u32 offset   = in_slice * n_elem_slice;
  const u32 j        = i - offset;
  
  const u32 in_col   = j / n_rows;
  const u32 in_row   = j % n_rows;

  const u32 index = (in_slice + aux_slice1)*m.n_elem_slice + (in_col + aux_col1)*m.n_rows + aux_row1 + in_row;
  return m.mem[index];
  }

template<typename eT >
arma_inline eT & subview_cube< eT >::operator() ( const u32  i  )  [inherited]

Definition at line 804 of file subview_cube_meat.hpp.

References arma_check(), subview_cube< eT >::aux_col1, subview_cube< eT >::aux_row1, subview_cube< eT >::aux_slice1, subview_cube< eT >::m, subview_cube< eT >::m_ptr, subview_cube< eT >::n_elem, subview_cube< eT >::n_elem_slice, subview_cube< eT >::n_rows, and access::rw().

  {
  arma_check( (m_ptr == 0), "subview_cube::operator(): matrix is read-only");
  arma_debug_check( (i >= n_elem), "subview_cube::operator(): index out of bounds");
  
  const u32 in_slice = i / n_elem_slice;
  const u32 offset   = in_slice * n_elem_slice;
  const u32 j        = i - offset;
  
  const u32 in_col   = j / n_rows;
  const u32 in_row   = j % n_rows;

  const u32 index = (in_slice + aux_slice1)*m.n_elem_slice + (in_col + aux_col1)*m.n_rows + aux_row1 + in_row;
  return access::rw( (*m_ptr).mem[index] );
  }

template<typename eT >
arma_inline eT subview_cube< eT >::operator() ( const u32  i  )  const [inherited]

Definition at line 825 of file subview_cube_meat.hpp.

References subview_cube< eT >::aux_col1, subview_cube< eT >::aux_row1, subview_cube< eT >::aux_slice1, subview_cube< eT >::m, subview_cube< eT >::n_elem, subview_cube< eT >::n_elem_slice, and subview_cube< eT >::n_rows.

  {
  arma_debug_check( (i >= n_elem), "subview_cube::operator(): index out of bounds");
  
  const u32 in_slice = i / n_elem_slice;
  const u32 offset   = in_slice * n_elem_slice;
  const u32 j        = i - offset;
  
  const u32 in_col   = j / n_rows;
  const u32 in_row   = j % n_rows;

  const u32 index = (in_slice + aux_slice1)*m.n_elem_slice + (in_col + aux_col1)*m.n_rows + aux_row1 + in_row;
  return m.mem[index];
  }

template<typename eT >
arma_inline eT & subview_cube< eT >::operator() ( const u32  in_row,
const u32  in_col,
const u32  in_slice 
) [inherited]

Definition at line 845 of file subview_cube_meat.hpp.

References arma_check(), subview_cube< eT >::aux_col1, subview_cube< eT >::aux_row1, subview_cube< eT >::aux_slice1, subview_cube< eT >::m, subview_cube< eT >::m_ptr, subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, subview_cube< eT >::n_slices, and access::rw().

  {
  arma_check( (m_ptr == 0), "subview_cube::operator(): matrix is read-only");
  arma_debug_check( ( (in_row >= n_rows) || (in_col >= n_cols) || (in_slice >= n_slices) ), "subview_cube::operator(): location out of bounds");
  
  const u32 index = (in_slice + aux_slice1)*m.n_elem_slice + (in_col + aux_col1)*m.n_rows + aux_row1 + in_row;
  return access::rw( (*m_ptr).mem[index] );
  }

template<typename eT >
arma_inline eT subview_cube< eT >::operator() ( const u32  in_row,
const u32  in_col,
const u32  in_slice 
) const [inherited]

Definition at line 859 of file subview_cube_meat.hpp.

References subview_cube< eT >::aux_col1, subview_cube< eT >::aux_row1, subview_cube< eT >::aux_slice1, subview_cube< eT >::m, subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, and subview_cube< eT >::n_slices.

  {
  arma_debug_check( ( (in_row >= n_rows) || (in_col >= n_cols) || (in_slice >= n_slices) ), "subview_cube::operator(): location out of bounds");
  
  const u32 index = (in_slice + aux_slice1)*m.n_elem_slice + (in_col + aux_col1)*m.n_rows + aux_row1 + in_row;
  return m.mem[index];
  }

template<typename eT >
arma_inline eT & subview_cube< eT >::at ( const u32  in_row,
const u32  in_col,
const u32  in_slice 
) [inherited]

Definition at line 872 of file subview_cube_meat.hpp.

References arma_check(), subview_cube< eT >::aux_col1, subview_cube< eT >::aux_row1, subview_cube< eT >::aux_slice1, subview_cube< eT >::m, subview_cube< eT >::m_ptr, and access::rw().

  {
  arma_check( (m_ptr == 0), "subview_cube::at(): cube is read-only");
  
  const u32 index = (in_slice + aux_slice1)*m.n_elem_slice + (in_col + aux_col1)*m.n_rows + aux_row1 + in_row;
  return access::rw( (*m_ptr).mem[index] );
  }

template<typename eT >
arma_inline eT subview_cube< eT >::at ( const u32  in_row,
const u32  in_col,
const u32  in_slice 
) const [inherited]

Definition at line 885 of file subview_cube_meat.hpp.

References subview_cube< eT >::aux_col1, subview_cube< eT >::aux_row1, subview_cube< eT >::aux_slice1, and subview_cube< eT >::m.

  {
  const u32 index = (in_slice + aux_slice1)*m.n_elem_slice + (in_col + aux_col1)*m.n_rows + aux_row1 + in_row;
  return m.mem[index];
  }

template<typename eT >
arma_inline eT * subview_cube< eT >::slice_colptr ( const u32  in_slice,
const u32  in_col 
) [inherited]
template<typename eT >
arma_inline const eT * subview_cube< eT >::slice_colptr ( const u32  in_slice,
const u32  in_col 
) const [inherited]

Definition at line 908 of file subview_cube_meat.hpp.

References subview_cube< eT >::aux_col1, subview_cube< eT >::aux_row1, subview_cube< eT >::aux_slice1, and subview_cube< eT >::m.

  {
  return & m.mem[ (in_slice + aux_slice1)*m.n_elem_slice + (in_col + aux_col1)*m.n_rows + aux_row1 ];
  }

template<typename eT >
bool subview_cube< eT >::check_overlap ( const subview_cube< eT > &  x  )  const [inline, inherited]

Definition at line 918 of file subview_cube_meat.hpp.

References subview_cube< eT >::aux_col1, subview_cube< eT >::aux_col2, subview_cube< eT >::aux_row1, subview_cube< eT >::aux_row2, subview_cube< eT >::aux_slice1, subview_cube< eT >::aux_slice2, and subview_cube< eT >::m.

Referenced by subview_cube< eT >::operator%=(), subview_cube< eT >::operator+=(), subview_cube< eT >::operator-=(), subview_cube< eT >::operator/=(), and subview_cube< eT >::operator=().

  {
  const subview_cube<eT>& t = *this;
  
  if(&t.m != &x.m)
    {
    return false;
    }
  else
    {
    const bool row_overlap =
      (
      ( (x.aux_row1 >= t.aux_row1) && (x.aux_row1 <= t.aux_row2) )
      || 
      ( (x.aux_row2 >= t.aux_row1) && (x.aux_row2 <= t.aux_row2) )
      );
    
    const bool col_overlap =
      (
      ( (x.aux_col1 >= t.aux_col1) && (x.aux_col1 <= t.aux_col2) )
      || 
      ( (x.aux_col2 >= t.aux_col1) && (x.aux_col2 <= t.aux_col2) )
      );
    
    const bool slice_overlap =
      (
      ( (x.aux_slice1 >= t.aux_slice1) && (x.aux_slice1 <= t.aux_slice2) )
      || 
      ( (x.aux_slice2 >= t.aux_slice1) && (x.aux_slice2 <= t.aux_slice2) )
      );
    
    return (row_overlap & col_overlap & slice_overlap);
    }
  }

template<typename eT >
bool subview_cube< eT >::check_overlap ( const Mat< eT > &  x  )  const [inline, inherited]

Definition at line 958 of file subview_cube_meat.hpp.

References subview_cube< eT >::aux_slice1, subview_cube< eT >::aux_slice2, subview_cube< eT >::m, and Mat< eT >::memptr().

  {
  const subview_cube<eT>& t = *this;
  
  for(u32 slice = t.aux_slice1; slice <= t.aux_slice2; ++slice)
    {
    const Mat<eT>& y = *(t.m.mat_ptrs[slice]);
  
    if( x.memptr() == y.memptr() )
      {
      return true;
      }
    }
  
  return false;
  }

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

cube X = Y.subcube(...)

Definition at line 981 of file subview_cube_meat.hpp.

References subview_cube< eT >::m, Cube< eT >::n_cols, subview_cube< eT >::n_cols, Cube< eT >::n_rows, subview_cube< eT >::n_rows, Cube< eT >::n_slices, subview_cube< eT >::n_slices, Cube< eT >::set_size(), subview_cube< eT >::slice_colptr(), and Cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  //
  const bool alias = (&actual_out == &in.m);
  
  Cube<eT>* tmp = (alias) ? new Cube<eT> : 0;
  Cube<eT>& out = (alias) ? (*tmp)       : actual_out;
  
  //
  
  const u32 n_rows   = in.n_rows;
  const u32 n_cols   = in.n_cols;
  const u32 n_slices = in.n_slices;
  
  out.set_size(n_rows, n_cols, n_slices);
  
  arma_extra_debug_print(arma_boost::format("out.n_rows = %d   out.n_cols = %d    out.n_slices = %d    in.m.n_rows = %d   in.m.n_cols = %d   in.m.n_slices = %d") % out.n_rows % out.n_cols % out.n_slices % in.m.n_rows % in.m.n_cols % in.m.n_slices);
  
  
  for(u32 slice = 0; slice<n_slices; ++slice)
    {
    for(u32 col = 0; col<n_cols; ++col)
      {
            eT* out_coldata = out.slice_colptr(slice,col);
      const eT*  in_coldata =  in.slice_colptr(slice,col);
      
      for(u32 row = 0; row<n_rows; ++row)
        {
        out_coldata[row] = in_coldata[row];
        }
      
      }
    }
  
  
  if(alias)
    {
    actual_out = out;
    delete tmp;
    }
  
  }

template<typename eT >
void subview_cube< eT >::extract ( Mat< eT > &  out,
const subview_cube< eT > &  in 
) [inline, static, inherited]

mat X = Y.subcube(...)

Definition at line 1032 of file subview_cube_meat.hpp.

References subview_cube< eT >::aux_slice1, Mat< eT >::colptr(), subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, subview_cube< eT >::n_slices, Mat< eT >::set_size(), and subview_cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  arma_debug_check( (in.n_slices != 1), "subview_cube::extract(): given subcube doesn't have exactly one slice" );
  
  out.set_size(in.n_rows, in.n_cols);
  
  for(u32 col = 0; col < in.n_cols; ++col)
    {
    const eT* in_coldata  = in.slice_colptr(in.aux_slice1, col);
          eT* out_coldata = out.colptr(col);
    
    for(u32 row = 0; row < in.n_rows; ++row)
      {
      out_coldata[row] = in_coldata[row];
      }
    }
  }

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

cube X += Y.subcube(...)

Definition at line 1058 of file subview_cube_meat.hpp.

References Cube< eT >::n_cols, subview_cube< eT >::n_cols, Cube< eT >::n_rows, subview_cube< eT >::n_rows, Cube< eT >::n_slices, subview_cube< eT >::n_slices, subview_cube< eT >::slice_colptr(), and Cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  arma_debug_assert_same_size(out, in, "cube addition");
  
  const u32 n_rows   = out.n_rows;
  const u32 n_cols   = out.n_cols;
  const u32 n_slices = out.n_slices;
  
  for(u32 slice = 0; slice<n_slices; ++slice)
    {
    for(u32 col = 0; col<n_cols; ++col)
      {
            eT* out_coldata = out.slice_colptr(slice,col);
      const eT*  in_coldata =  in.slice_colptr(slice,col);
      
      for(u32 row = 0; row<n_rows; ++row)
        {
        out_coldata[row] += in_coldata[row];
        }
      }
    }
  }

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

cube X -= Y.subcube(...)

Definition at line 1089 of file subview_cube_meat.hpp.

References Cube< eT >::n_cols, subview_cube< eT >::n_cols, Cube< eT >::n_rows, subview_cube< eT >::n_rows, Cube< eT >::n_slices, subview_cube< eT >::n_slices, subview_cube< eT >::slice_colptr(), and Cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  arma_debug_assert_same_size(out, in, "cube subtraction");
  
  const u32 n_rows   = out.n_rows;
  const u32 n_cols   = out.n_cols;
  const u32 n_slices = out.n_slices;
  
  for(u32 slice = 0; slice<n_slices; ++slice)
    {
    for(u32 col = 0; col<n_cols; ++col)
      {
            eT* out_coldata = out.slice_colptr(slice,col);
      const eT*  in_coldata =  in.slice_colptr(slice,col);
      
      for(u32 row = 0; row<n_rows; ++row)
        {
        out_coldata[row] -= in_coldata[row];
        }
      }
    }
  }

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

cube X = Y.subcube(...)

Definition at line 1120 of file subview_cube_meat.hpp.

References Cube< eT >::n_cols, subview_cube< eT >::n_cols, Cube< eT >::n_rows, subview_cube< eT >::n_rows, Cube< eT >::n_slices, subview_cube< eT >::n_slices, subview_cube< eT >::slice_colptr(), and Cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  arma_debug_assert_same_size(out, in, "cube schur product");
  
  const u32 n_rows   = out.n_rows;
  const u32 n_cols   = out.n_cols;
  const u32 n_slices = out.n_slices;
  
  for(u32 slice = 0; slice<n_slices; ++slice)
    {
    for(u32 col = 0; col<n_cols; ++col)
      {
            eT* out_coldata = out.slice_colptr(slice,col);
      const eT*  in_coldata =  in.slice_colptr(slice,col);
      
      for(u32 row = 0; row<n_rows; ++row)
        {
        out_coldata[row] *= in_coldata[row];
        }
      }
    }
  }

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

cube X /= Y.subcube(...)

Definition at line 1151 of file subview_cube_meat.hpp.

References Cube< eT >::n_cols, subview_cube< eT >::n_cols, Cube< eT >::n_rows, subview_cube< eT >::n_rows, Cube< eT >::n_slices, subview_cube< eT >::n_slices, subview_cube< eT >::slice_colptr(), and Cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  arma_debug_assert_same_size(out, in, "element-wise cube division");
  
  const u32 n_rows   = out.n_rows;
  const u32 n_cols   = out.n_cols;
  const u32 n_slices = out.n_slices;
  
  for(u32 slice = 0; slice<n_slices; ++slice)
    {
    for(u32 col = 0; col<n_cols; ++col)
      {
            eT* out_coldata = out.slice_colptr(slice,col);
      const eT*  in_coldata =  in.slice_colptr(slice,col);
      
      for(u32 row = 0; row<n_rows; ++row)
        {
        out_coldata[row] /= in_coldata[row];
        }
      }
    }
  }

template<typename eT >
void subview_cube< eT >::plus_inplace ( Mat< eT > &  out,
const subview_cube< eT > &  in 
) [inline, static, inherited]

mat X += Y.subcube(...)

Definition at line 1182 of file subview_cube_meat.hpp.

References subview_cube< eT >::aux_slice1, Mat< eT >::colptr(), subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, and subview_cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  arma_debug_assert_same_size(out, in, "matrix addition");
  
  for(u32 col = 0; col < in.n_cols; ++col)
    {
    const eT* in_coldata  = in.slice_colptr(in.aux_slice1, col);
          eT* out_coldata = out.colptr(col);
    
    for(u32 row = 0; row < in.n_rows; ++row)
      {
      out_coldata[row] += in_coldata[row];
      }
    }
    
  }

template<typename eT >
void subview_cube< eT >::minus_inplace ( Mat< eT > &  out,
const subview_cube< eT > &  in 
) [inline, static, inherited]

mat X -= Y.subcube(...)

Definition at line 1207 of file subview_cube_meat.hpp.

References subview_cube< eT >::aux_slice1, Mat< eT >::colptr(), subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, and subview_cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  arma_debug_assert_same_size(out, in, "matrix subtraction");
  
  for(u32 col = 0; col < in.n_cols; ++col)
    {
    const eT* in_coldata  = in.slice_colptr(in.aux_slice1, col);
          eT* out_coldata = out.colptr(col);
    
    for(u32 row = 0; row < in.n_rows; ++row)
      {
      out_coldata[row] -= in_coldata[row];
      }
    }
    
  }

template<typename eT >
void subview_cube< eT >::schur_inplace ( Mat< eT > &  out,
const subview_cube< eT > &  in 
) [inline, static, inherited]

mat X = Y.subcube(...)

Definition at line 1232 of file subview_cube_meat.hpp.

References subview_cube< eT >::aux_slice1, Mat< eT >::colptr(), subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, and subview_cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  arma_debug_assert_same_size(out, in, "matrix schur product");
  
  for(u32 col = 0; col < in.n_cols; ++col)
    {
    const eT* in_coldata  = in.slice_colptr(in.aux_slice1, col);
          eT* out_coldata = out.colptr(col);
    
    for(u32 row = 0; row < in.n_rows; ++row)
      {
      out_coldata[row] *= in_coldata[row];
      }
    }
    
  }

template<typename eT >
void subview_cube< eT >::div_inplace ( Mat< eT > &  out,
const subview_cube< eT > &  in 
) [inline, static, inherited]

mat X /= Y.subcube(...)

Definition at line 1257 of file subview_cube_meat.hpp.

References subview_cube< eT >::aux_slice1, Mat< eT >::colptr(), subview_cube< eT >::n_cols, subview_cube< eT >::n_rows, and subview_cube< eT >::slice_colptr().

  {
  arma_extra_debug_sigprint();
  
  arma_debug_assert_same_size(out, in, "matrix element-wise division");
  
  for(u32 col = 0; col < in.n_cols; ++col)
    {
    const eT* in_coldata  = in.slice_colptr(in.aux_slice1, col);
          eT* out_coldata = out.colptr(col);
    
    for(u32 row = 0; row < in.n_rows; ++row)
      {
      out_coldata[row] /= in_coldata[row];
      }
    }
    
  }