optimisations for common cases

This commit is contained in:
conrad
2025-01-17 13:37:58 +10:00
parent 32fd3716fe
commit acd2a5fcad
+5 -1
View File
@@ -213,7 +213,11 @@ op_reshape::apply_cube_inplace(Cube<eT>& A, const uword new_n_rows, const uword
if(A.is_empty()) { A.zeros(new_n_rows, new_n_cols, new_n_slices); return; }
if( (A.n_rows == new_n_cols) && (A.n_cols == new_n_rows) && (A.n_slices == new_n_slices) ) { A.set_size(new_n_rows, new_n_cols, new_n_slices); return; }
const bool is_into_colvec = ( (new_n_cols == uword(1)) && (new_n_rows == A.n_elem) && (new_n_slices == uword(1) );
const bool is_into_rowvec = ( (new_n_rows == uword(1)) && (new_n_cols == A.n_elem) && (new_n_slices == uword(1) );
const bool is_rowcol_swap = ( (A.n_rows == new_n_cols) && (A.n_cols == new_n_rows) && (A.n_slices == new_n_slices) );
if(is_into_colvec || is_into_rowvec || is_rowcol_swap) { A.set_size(new_n_rows, new_n_cols, new_n_slices); return; }
Cube<eT> B(new_n_rows, new_n_cols, new_n_slices, arma_nozeros_indicator());