Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void gem(matrix &matrix, int level){
- if(level == matrix.size() - 1)
- return;
- auto divider = matrix[level][level];
- auto row = level;
- // find non zero divider
- while (divider == 0 && row < matrix.size()){
- divider = matrix[++row][level];
- }
- if(divider == 0){
- gem(matrix,level + 1);
- return;
- }
- // divide row
- for (int i = 0; i < matrix[row].size(); ++i)
- matrix[row][i] /= divider;
- // elimination
- for (int i = row + 1; i < matrix.size(); ++i) {
- auto scaler = matrix[i][level];
- for (int j = level; j < matrix[i].size(); ++j) {
- matrix[i][j] -= scaler * matrix[row][j];
- }
- }
- gem(matrix,level + 1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement