- /* same op on vec */
- vec[row] = vec[row] - temp * vec[col];
- }
- }
- /* back-solve, store solution in scramvec */
- scramvec[nsize - 1] = vec[nsize - 1] / _A(nsize - 1,nsize - 1);
-
- /* answer needs sorting */
- for(i=nsize-2;i>=0;i--) {
- sum = 0;
- for(j=i+1;j<nsize;j++)
- sum = sum + _A(i,j) * scramvec[j];
- scramvec[i] = (vec[i] - sum) / _A(i,i);
- }
- /* reorder unknowns--return in vec */
- for(i=0;i<nsize;i++) {
- j = x[i];
- vec[j] = scramvec[i];
+ /* changes during calc */
+ temp = _A(row,col) / _A(col,col);
+
+ /* annihilates A[][] */
+ for(i=col;i<nsize;i++)
+ _A(row,i) = _A(row,i) - temp * _A(col,i);
+
+ /* same op on vec */
+ vec[row] = vec[row] - temp * vec[col];