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