code 31051;
procedure POLCHS(N,A);
value N; integer N; array A;
if N>1 then
begin
comment SCALING;
integer K,L,TWOPOW;
TWOPOW:=2;
for K:=1 step 1 until N-2 do
begin
A[K]:=A[K]/TWOPOW; TWOPOW:=TWOPOW*2;
end;
A[N-1]:=2*A[N-1]/TWOPOW;
A[N]:=A[N]/TWOPOW;
A[N-2]:=A[N-2]+A[N];
comment N<=2 READY;
for K:=N-2 step -1 until 1 do
begin
A[K-1]:=A[K-1]+A[K+1]; A[K]:=A[K]*2 + A[K+2];
for L:=K+1 step 1 until N-2 do
A[L]:=A[L]+A[L+2];
end;
end POLCHS;
eop