code 31091;
real procedure COSSER(N,THETA,A);
value N,THETA;integer N;real THETA;array A;
begin integer K;real C,CC,LAMBDA,H,DUN,UN,UN1;
C:=COS(THETA);
if C<-.5then
begin LAMBDA:= 4*COS(THETA/2)**2;UN:=DUN:=0;
for K:=N"STEP"-1until 0do
begin UN:=DUN-UN;
DUN:=LAMBDA*UN-DUN+A[K]
end;COSSER:=DUN-LAMBDA/2*UN
end else if C> .5then
begin LAMBDA:=-4*SIN(THETA/2)**2;UN:=DUN:=0;
for K:=N"STEP"-1until 0do
begin UN:=DUN+UN;
DUN:=LAMBDA*UN+DUN+A[K]
end;COSSER:=DUN-LAMBDA/2*UN
end else
begin CC:=C+C;UN:=UN1:=0;
for K:=N"STEP"-1until 1do
begin H:=CC*UN-UN1+A[K];
UN1:=UN;UN:=H
end;COSSER:=A[0]+UN*C-UN1
end
end COSSER
eop