For a model I am developing I found an matrix operation alternative of a for loop strategy
matrix[I1_dim[1], I1_dim[2]] lambda_mat_1 = to_matrix(lambda[idx_1], I1_dim[1], I1_dim[2]); // Bug prone
matrix[Q, ct_in_levels[1]] prop_mat_1 = vector_array_to_matrix(prop_1); //prop1 is a simplex
matrix[I1_dim[1] , Q] lambda_sum_1 = lambda_mat_1 * prop_mat_1';
matrix[I1_dim[1], I1_dim[2]] sigma_mat_1 = to_matrix(sigma[idx_1], I1_dim[1], I1_dim[2]);
matrix[I1_dim[1], Q] sigma_sum_1 = square(lambda_sum_1) ./ (( square(lambda_mat_1) ./ sigma_mat_1 ) * square(prop_mat_1')) ;
Although can reduce execution time of 50%, I would like to improve further (considering that I can parallelise the for loop with map_rect).
In this list of commands I have to do multiple conversion between vectors, matrices etc…
Is there anything I should avoid? That is computationally heavy by definition? (e.g., the creation of so many intermediate variables)
Thsnks.