diff --git a/al_bool_matrix.hpp b/al_bool_matrix.hpp index 84f5761..2bf063f 100644 --- a/al_bool_matrix.hpp +++ b/al_bool_matrix.hpp @@ -86,11 +86,13 @@ class BoolSquareMatrix { STORAGE vector_value = 0; for (STORAGE ind = 0; ind < SIZE; ++ind) { BoolVector cur_vec = vec * get_row(ind); - STORAGE cur_sum = 0; + /* STORAGE cur_sum = 0; for (STORAGE vec_ind = 0; vec_ind < SIZE; ++vec_ind) cur_sum += cur_vec.at(vec_ind); + same but slow version, we just need number of bits + */ vector_value *= 2; - vector_value += cur_sum % 2; + vector_value += __builtin_popcount(cur_vec.get_value()) % 2; // cur_sum } return BoolVector(vector_value); }