#include #include #include #include "proto.h" static void pivot(double **a,int *perm,int n,int k) { int i,mi; double *tmp,t,max;; max=fabs(a[k][k]); mi=k; for (i=k+1; i max ) { max=fabs(a[i][k]); mi=i; } if (max == 0.0) error_exit("Matrix singular",__FILE__,__LINE__); if (mi != k) { tmp=a[k];a[k]=a[mi];a[mi]=tmp; perm[k]=mi; } return; } int *lr_factor(double **a,int n) { int i,k; int *perm; perm = (int *)calloc(n,sizeof(int)); if (!perm) error_exit("Out of memory",__FILE__,__LINE__); for(k=0; k=0; i--) { b[i] = b[i] - xyT(a[i]+i+1,b+i+1,n-(i+1)); } return b; } int main() { int n,i,j; double **a, **a_1, **lr, *b, *h; int *perm; scanf("%d",&n); a = matrix(n,n); a_1 = matrix(n,n); lr = matrix(n,n); if ( a==NULL || a_1==NULL || lr==NULL ) error_exit("Out of memory",__FILE__,__LINE__); for (i=0; i