All pastes #51657 Raw Edit

Anonymous

public text v1 · immutable
#51657 ·published 2006-04-27 04:21 UTC
rendered paste body
void Gauss(double a[10][10], double b[10], int n, double x[10])
{

int l[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

//real array (aij)nxn, (li)n;
//real array allocate (si)n;
int i=0;
int j=0;
int k=0;

double r=0.0;
double rmax=0.0;
double smax=0.0;
double xmult=0.0;
double tempval =0.0;
double s[10];

double sum=0.0;


for (i = 0; i<n; i++) 
{
	l[i] = i;
	smax = 0.0;
	
	for(j=0; j<n; j++)
	{
		//smax = max(smax, |aij|)
		tempval = (double)a[i][j];
				if(tempval < 0)
		{
			tempval = -tempval;
		}
		if(tempval > smax)
		{
			smax = tempval;
		}
		
	}

	s[i] = smax;

}


for (k=0; k<n-1; k++)
{
	rmax=0;

	for(i=k; i<n; i++)
	{
		//r=|ali,k/sli|
		r = fabs(a[l[i]][k] / s[l[i]]);
		
		
		if (r > rmax) 
		{
			rmax = r;
			j=i;
		}

	}

	//lj=lk;
    //lk=lj;
	tempval = l[j];
	
	l[j] = l[k];
	
	l[k] = tempval;
	
	for (i=(k+1); i<n; i++)
	{
		xmult = a[l[i]][k]/a[l[k]][k];
		a[l[i]][k] = xmult;
		
		for (j=(k+1); j<n; j++)
		{
		//ali,j = ali,j - (xmult)alk,j;
		
		a[l[i]][j] = a[l[i]][j] - xmult * a[l[k]][j];
		}
	}


}		

////second part of procedure...................

for(i = 0;  i < 10 ; i++)
{
	x[i] = 0;
}
i =0;
k =0; 
sum = 0;

for (k=0; k<n-1; k++)
	{
		for (i=(k+1); i<n; i++)
		{
			b[l[i]] = b[l[i]] - a[l[i]][k] * b[l[k]];
		}
	}



	x[n-1] = b[l[n-1]]/a[l[n-1]][n-1];

	for (i=(n-2); i >=0; i--)
	{
		sum = b[l[i]];
		
		for (j=(i+1); j<n; j++)
		{
		sum = sum - a[l[i]][j]*x[j];
		}
		

		x[i] = fabs(sum/a[l[i]][i]);
		if (x[i] == -0.00000)
		{
			x[i] = 0.00000;
		}

	}

}