code 34311;
procedure CHLDEC1(A, N, AUX); value N; integer N;
array A, AUX;
begin integer J, K, KK, KJ, LOW, UP; real R, EPSNORM;
R:= 0; KK:= 0;
for K:= 1 step 1 until N do
begin KK:= KK + K; if A[KK] > R then R:= A[KK] end;
EPSNORM:= AUX[2] * R; KK:= 0;
for K:= 1 step 1 until N do
begin KK:= KK + K; LOW:= KK - K + 1; UP:= KK - 1;
R:= A[KK] - VECVEC(LOW, UP, 0, A, A);
if R <= EPSNORM then
begin AUX[3]:= K - 1; goto END end;
A[KK]:= R:= SQRT(R); KJ:= KK + K;
for J:= K + 1 step 1 until N do
begin A[KJ]:= (A[KJ] -
VECVEC(LOW, UP, KJ - KK, A, A)) / R;
KJ:= KJ + J
end
end;
AUX[3]:= N;
END:
end CHLDEC1;
eop