Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void solve(double *a, double *b, int n)
- {
- int i, j, k, im, jm;
- double max;
- for (i=0; i<n; i++)
- {
- im=i;
- jm=i;
- max=a[i*n+i];
- for (j=i; j<n; j++)
- for (k=i; k<n; k++)
- if (a[j*n+k]>max)
- {
- max=a[j*n+k];
- im=j;
- jm=k;
- }
- for (j=i; j<n; j++)
- {
- max=a[i*n+j];
- a[i*n+j]=a[im*n+j];
- a[im*n+j]=max;
- }
- for (j=0; j<n; j++)
- {
- max=b[i*n+j];
- b[i*n+j]=b[im*n+j];
- b[im*n+j]=max;
- }
- for (j=0; j<n; j++)
- {
- max=a[i+j*n];
- a[i+j*n]=a[j*n+jm];
- a[j*n+jm]=max;
- }
- for (j=0; j<n; j++)
- {
- max=b[i+j*n];
- b[i+j*n]=b[j*n+jm];
- b[j*n+jm]=max;
- }
- k=i*n;
- max=a[k+i];
- for (j=n-1; j>=i; j--)
- a[k+j]=a[k+j]/max;
- for (j=n-1; j>=0; j--)
- b[k+j]=b[k+j]/max;
- for (j=i+1; j<n; j++)
- {
- max=a[j*n+i];
- for (k=i; k<n; k++)
- {
- a[j*n+k]=a[j*n+k]-max*a[i*n+k];
- }
- for (k=0; k<n; k++)
- {
- b[j*n+k]=b[j*n+k]-max*b[i*n+k];
- }
- }
- }
- for (i=n-2; i>=0; i--)
- {
- for (j=i; j>=0; j--)
- {
- for (k=0; k<n; k++)
- {
- b[j*n+k]=b[j*n+k]-a[j*n+i+1]*b[(i+1)*n+k];
- a[j*n+k]=a[j*n+k]-a[j*n+i+1]*a[(i+1)*n+k];
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement