Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.73 KB | None | 0 0
  1. void gem(matrix &matrix, int level){
  2. if(level == matrix.size() - 1)
  3. return;
  4. auto divider = matrix[level][level];
  5. auto row = level;
  6. // find non zero divider
  7. while (divider == 0 && row < matrix.size()){
  8. divider = matrix[++row][level];
  9. }
  10.  
  11. if(divider == 0){
  12. gem(matrix,level + 1);
  13. return;
  14. }
  15.  
  16. // divide row
  17. for (int i = 0; i < matrix[row].size(); ++i)
  18. matrix[row][i] /= divider;
  19.  
  20. // elimination
  21. for (int i = row + 1; i < matrix.size(); ++i) {
  22. auto scaler = matrix[i][level];
  23. for (int j = level; j < matrix[i].size(); ++j) {
  24. matrix[i][j] -= scaler * matrix[row][j];
  25. }
  26. }
  27. gem(matrix,level + 1);
  28. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement