From 32fd3716febea1667d1fc119bd0ee4ab4ed204ed Mon Sep 17 00:00:00 2001 From: conrad Date: Fri, 17 Jan 2025 13:33:13 +1000 Subject: [PATCH] optimisations for common cases --- include/armadillo_bits/op_reshape_meat.hpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/include/armadillo_bits/op_reshape_meat.hpp b/include/armadillo_bits/op_reshape_meat.hpp index 2f14559b..e6a43651 100644 --- a/include/armadillo_bits/op_reshape_meat.hpp +++ b/include/armadillo_bits/op_reshape_meat.hpp @@ -83,7 +83,11 @@ op_reshape::apply_mat_inplace(Mat& A, const uword new_n_rows, const uword ne if(A.is_empty()) { A.zeros(new_n_rows, new_n_cols); return; } - if( (A.n_rows == new_n_cols) && (A.n_cols == new_n_rows) ) { A.set_size(new_n_rows, new_n_cols); return; } + const bool is_into_colvec = ( (new_n_cols == uword(1)) && (new_n_rows == A.n_elem) ); + const bool is_into_rowvec = ( (new_n_rows == uword(1)) && (new_n_cols == A.n_elem) ); + const bool is_rowcol_swap = ( (A.n_rows == new_n_cols) && (A.n_cols == new_n_rows) ); + + if(is_into_colvec || is_into_rowvec || is_rowcol_swap) { A.set_size(new_n_rows, new_n_cols); return; } Mat B(new_n_rows, new_n_cols, arma_nozeros_indicator());