/* gauss.c */ #include void rowdiv(float [], float); void rowdif(float [], float [], float); void _debugout(float *); //#define _debugout() {int i,j; for(i=0;i<3;i++){for(j=0;j<4;j++) printf("%5.2f ",a[i][j]);printf("\n");}} int main() { static float a[3][4] ={ {2,-1, 1, 0}, {1, 1,-1, 6}, {1, 2, 3, 5}}; int i,j; for (i = 0; i < 3; i++) { rowdiv(a[i],a[i][i]); _debugout(a[0]); //_debugout(); for (j = i+1; j < 3; j++) { rowdif(a[j],a[i],a[j][i]); } _debugout(a[0]); //_debugout(); } for (i = 1; i >= 0; i--) { for (j = 2; j >= i+1; j--) { rowdif(a[i],a[j],a[i][j]); } _debugout(a[0]); //_debugout(); } return(0); } void rowdiv(float b[], float v) { int k; for (k = 0; k < 4; k++) { b[k] = b[k]/v; } } void rowdif(float b[], float c[], float v) { int k; for (k = 0; k < 4; k++) { b[k] = b[k] - c[k]*v; } } void _debugout(float *x) { int i,j; for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) { printf("%5.2f ",*(x+4*i+j)); } printf("\n"); } }