void chlinv1(float a[], int n) { float *allocate_real_vector(int, int); void free_real_vector(float *, int); float seqvec(int, int, int, int, float [], float []); float symmatvec(int, int, int, float [], float []); int i,ii,i1,j,ij; float r,*u; u=allocate_real_vector(1,n); ii=((n+1)*n)/2; for (i=n; i>=1; i--) { r=1.0/a[ii]; i1=i+1; ij=ii+i; for (j=i1; j<=n; j++) { u[j]=a[ij]; ij += j; } for (j=n; j>=i1; j--) { ij -= j; a[ij] = -symmatvec(i1,n,j,a,u)*r; } a[ii]=(r-seqvec(i1,n,ii+i,0,a,u))*r; ii -= i; } free_real_vector(u,1); }