int n=3;
double arr[4][5];
double result[4]={0,};
int index=0;
int main(void)
{
FILE *fr =fopen("input.txt","rt");
int m_x;
int m_y;
fscanf(fr,"%d %d",&m_x,&m_y);
//printf("%d %d",m_x,m_y);
for(int i=0 ; i<m_x ; i++)
{
for(int j=0 ; j<m_y ; j++)
{
fscanf(fr,"%lf ",&arr[i][j]);
}
}
for(int x=0;x<n;x++)
{
for(int y=0;y<n+1;y++)
{
printf("%12.3lf",arr[x][y]);
}
printf("\n");
}
printf("\n");
double temp=0;
for(int i=0;i<n-1;i++)
{
//pivoting
printf("pivoting....\n");
temp=0;
for(int z=i;z<n;z++)
{
if( abs(arr[z][i]) >= temp)
{
temp = abs(arr[z][i]);
index = z;
}
}
double temp1=0;
for(int z=0;z<n+1;z++)
{
temp1=arr[i][z];
arr[i][z]=arr[index][z];
arr[index][z]=temp1;
}
for(int x=0;x<n;x++)
{
for(int y=0;y<n+1;y++)
{
printf("%12.3lf",arr[x][y]);
}
printf("\n");
}
printf("\n");
//pivoting
for(int j=i+1;j<n+1-1;j++)
{
printf("gauss....\n");
double temp=arr[j][i];
for(int k=i;k<n+1;k++)
{
//printf("%d %d %d // %12.3lf %12.3lf %12.3lf %12.3lf \n",i,j,k,arr[j][k],arr[i][k],temp,arr[i][i]);
arr[j][k]=arr[j][k]-(arr[i][k]*temp/arr[i][i]);
}
for(int x=0;x<n;x++)
{
for(int y=0;y<n+1;y++)
{
printf("%12.3lf",arr[x][y]);
}
printf("\n");
}
printf("\n");
}
}
double sum;
for(int i=n-1 ; i>=0 ; i--)
{
sum=0;
for(int j=0; j<n-i-1 ; j++ )
{
sum+=arr[i][n-1-j]*result[n-1-j];
}
result[i]=(arr[i][n]-sum)/arr[i][i];
//printf("%12.3lf / %12.3lf / %12.3lf\n",arr[i][n],sum,arr[i][i]);
}
printf("\npartial pivot\n");
for(int i=0;i<n;i++)
{
printf("%d : %12.3lf\n",i,result[i]);
}
return 0;
}