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