
Gaussian Elimination
I am currently working on a huge satellite project that requires at one point a gaussian elimination of matricies in the formulas. I am working mainly in C in my current areas (but I have been trained only in C++). I need to write a paralell version of this algorithm (which I also have been trained in), but would like to get an efficient C serial version first. Can anyone help me out? I don't need the whole block below to understand whats going on, I am just really unclear on C syntax with multidimensional matricies (the whole block was posted for clarity). As a note, the block is only for forwardtracking in the algorithm ... I can write the backsubstitution from any help you can give me on this current pseudocode block. Thanks in advance.
Code:
// Read n from command line  function output arguements
// A is of size n by n
procedure GAUSSIAN_ELIMINATION()
begin
GET A, b FROM GIVEN FUNCTIONS
// Forward tracking
for k := 0 to n1 do
begin
for j := k+1 to n1 do
begin
A[k,j] := A[k,j]/A[k,k];
endfor;
b[k] := b[k]/A[k,k];
A[k,k] := 1;
for i := k+1 to n1 do
begin
for j := k+1 to n1 do
begin
A[i,j] := A[i,j]  A[i,k] * A[k,j];
endfor;
b[i] := b[i]  A[i,k] * b[k];
A[i, k] := 0;
endfor;
endfor;

Well, this is my take on the procedure :)
Code:
void GAUSSIAN_ELIMINATION(void)
/* Assume A[][] and b[] are global for simplicity */
{
int k, j, i;
for (k = 0; k < n1; k++)
{
for (j = k+1; k < n1; k++)
{
A[k][j] /= A[k][k];
}
b[k] /= A[k][k];
A[k][k] = 1;
for (i = k+1; i < n1; i++)
{
for (j = k+1; j < n1; j++)
{
A[i][j] /= A[i][k] * A[k][j];
}
b[i] = A[i][k] * b[k];
A[i][k] = 0;
}
}
}