#include #include #include #include "matrix.h" namespace splat { template std::bitset& matrix::operator[](int i){ return bits[i]; } template const std::bitset& matrix::operator[](int i) const { return bits[i]; } template const bool matrix::get(int row, int column) const { return bits[row][S-column-1]; } template void matrix::debug() { for(int i=0; i void gaussianElimination(matrix& matrix){ int top = 0; for(int column=0; column temp = matrix[top]; matrix[top] = matrix[firstOnePosition]; matrix[firstOnePosition] = temp; } // now we XOR all the rows below our pivot with the pivot row for(int row = firstOnePosition+1; row int getRank(matrix& matrix){ gaussianElimination(matrix); int rank = 0; for(int i=0; i(0)){ rank++; } } return rank; } template void matrix<10>::debug(); template int getRank<3>(matrix<3>&); template int getRank<32>(matrix<32>&); template int getRank<10>(matrix<10>&); }