Guest User

Gauss

a guest
Apr 23rd, 2014
230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.59 KB | None | 0 0
  1. int Matrix::inverse()
  2. {
  3.     int d, i, j, k;
  4.     for(j = 0; j < RS_K; j++)
  5.         for(k = 0; k < RS_K; k++)
  6.             inv[j][k] = j==k ? 1 : 0;
  7.     RSD f;
  8.     for(d = 0; d < RS_K; d++)
  9.     {
  10.         k = d;
  11.         if(!a[d][k])
  12.         {
  13.             for(j = d+1; !a[j][k] && j < RS_K; j++);
  14.             if(j==RS_K)
  15.                 return RS_K-d;
  16.             swap_lines(a, d, j);
  17.             swap_lines(inv, d, j);
  18.         }
  19.         f = a[d][k];
  20.         for(i = 0; i < RS_K; i++)
  21.             a[d][i] /= f, inv[d][i] /= f;
  22.         for(j = 0; j < RS_K; j++)
  23.         {
  24.             if(j == d)  continue;
  25.             f = a[j][d];
  26.             for(k = 0; k < RS_K; k++)
  27.                 a[j][k] -= f*a[d][k], inv[j][k] -= f*inv[d][k];
  28.         }
  29.     }
  30.     return 0;
  31. }
Advertisement
Add Comment
Please, Sign In to add comment