code: private static void rowOpTransform(Matrix M, int low, int high, int n, double q, double p)
      {
          double z;
          for (int j = low; j <= high; j++)
          {
              z = M.get(n-1, j);
              M.set(n - 1, j,  q * z + p * M.get(n, j));
              M.set(n, j,      q * M.get(n, j) - p * z);
          }
      }
docs: Updates the rows of the matrix M such that
  <br>
  M[n-1][j] = q * M[n-1][j] + p * M[n][j] <br>
  simultaneously altering <br>
  M[n][j] = q * M[n][j] - p * M[n-1][j] <br>
  as if M[n-1][j] had not been altered
  
  @param M the matrix to alter
  @param low the starting row (inclusive)
  @param high the ending row (inclusive)
  @param n the row to alter, and the preceding row will be altered as well
  @param q the first constant
  @param p the second constant