#include <math.h>

void chldec1(float a[], int n, float aux[])
{
	float vecvec(int, int, int, float [], float []);
	int j,k,kk,kj,low,up;
	float r,epsnorm;

	r=0.0;
	kk=0;
	for (k=1; k<=n; k++) {
		kk += k;
		if (a[kk] > r) r=a[kk];
	}
	epsnorm=aux[2]*r;
	kk=0;
	for (k=1; k<=n; k++) {
		kk += k;
		low=kk-k+1;
		up=kk-1;
		r=a[kk]-vecvec(low,up,0,a,a);
		if (r <= epsnorm) {
			aux[3]=k-1;
			return;
		}
		a[kk]=r=sqrt(r);
		kj=kk+k;
		for (j=k+1; j<=n; j++) {
			a[kj]=(a[kj]-vecvec(low,up,kj-kk,a,a))/r;
			kj +=j;
		}
	}
	aux[3]=n;
}