//! 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(...) | |
//!
| subview_cube< eT >::~subview_cube | ( | ) | [inline, inherited] |
Definition at line 23 of file subview_cube_meat.hpp.
{
arma_extra_debug_sigprint();
}
| 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(); }
| 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(); }
| 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().
| 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().
| 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().
| 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().
| 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];
}
}
}
}
| 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];
}
}
}
}
| 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];
}
}
}
}
| 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];
}
}
}
}
| 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];
}
}
}
}
| 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;
}
}
| 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;
}
}
| 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;
}
}
| 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;
}
}
| 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;
}
}
| 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];
}
}
}
| 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];
}
}
}
| 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];
}
}
}
| 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];
}
}
}
| 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];
}
}
}
| 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().
| 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));
}
| 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));
}
| 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] );
}
| 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];
}
| 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] );
}
| 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];
}
| 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] );
}
| 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_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] );
}
| 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.
| arma_inline eT * subview_cube< eT >::slice_colptr | ( | const u32 | in_slice, | |
| const u32 | in_col | |||
| ) | [inherited] |
Definition at line 896 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().
Referenced by subview_cube< eT >::div_inplace(), subview_cube< eT >::extract(), subview_cube< eT >::fill(), subview_cube< eT >::minus_inplace(), subview_cube< eT >::operator%=(), subview_cube< eT >::operator*=(), subview_cube< eT >::operator+=(), subview_cube< eT >::operator-=(), subview_cube< eT >::operator/=(), subview_cube< eT >::operator=(), subview_cube< eT >::plus_inplace(), and subview_cube< eT >::schur_inplace().
{
arma_check( (m_ptr == 0), "subview_cube::slice_colptr(): cube is read-only");
return & access::rw((*m_ptr).mem[ (in_slice + aux_slice1)*m.n_elem_slice + (in_col + aux_col1)*m.n_rows + aux_row1 ]);
}
| 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.
| 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);
}
}
| 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;
}
| 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;
}
}
| 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];
}
}
}
| 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];
}
}
}
}
| 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];
}
}
}
}
| 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];
}
}
}
}
| 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];
}
}
}
}
| 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];
}
}
}
| 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];
}
}
}
| 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];
}
}
}
| 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];
}
}
}