

0 1 0 3 4 5 6 7 8 
A[j][i]=0
. Also, since you will already have cleared all columns before the ith, you could start the loop on line 6 at k=i, rather than k=0. Overall, this will half the amount of computation, as well as reducing roundoff error.(3) If you are genuinely doing gaussian elimination then you should simultaneously be doing the same pivoting on the vector b; I can see no evidence of it, nor of the backsubstitution afterwards to find x. 








I hope that you have been doing Gaussian elimination on a COPY of A and b, because you change the original matrices. For the backsubstitution: 1 2 3 4 5 6 7 // Backsubstitute for ( int i = p  1; i >= 0; i ) { x[i] = b[i]; for ( int k = i + 1; k < p; k++ ) x[i] = A[i][k] * x[k]; x[i] /= A[i][i]; } In your backsubstitution code (the middle sample of your post) on line 5, A[i][p] would be going outside array bounds, line 8 should be cumulating changes to x[i], rather than replacing them, and what is currently line 9 should be after the j loop. You should think how you do this by hand with a small example. 