DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦4426f19f0⟧ TextFile

    Length: 1536 (0x600)
    Types: TextFile
    Names: »clenshawtx«

Derivation

└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ.  Detaljer om "HC8000" projekt.
    └─⟦0364f57e3⟧ 
        └─⟦80900d603⟧ »giprocfile« 
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
    └─⟦b2ec5d50f⟧ 
        └─⟦80900d603⟧ »giprocfile« 
            └─⟦this⟧ 

TextFile



;       clenshawtx            * page 1   22 11 77,  9.31;  

;  clenshaw

if listing.yes
char 10 12 10

clenshaw = set 1

clenshaw = algol

external real procedure clenshaw
________________________________
_             (a, g, arg, mode);  
value             g, arg, mode;  
array          a;  
integer           g,      mode;  
real                 arg;  

comment

the procedure performs Clenshaw summation
of trigonometric and Chebyshev series.

mode = 1 - Chebyshev series.

mode = 2 - trigonometric series with
elements a(g)*sin(g*arg).

mode = 3 - trigonometric series with
elements a(g)*cos(g*arg).

clenshaw   (return)       real
a          (call)         array
coefficients in the series

g          (call)         integer
degree of the series

arg        (call)         real
argument in the series;  

begin
  real     hr, hr1, hr2, cos_arg;  
  integer  t, ts;  

  ts:=if mode = 2 then 1 else 0;  
  cos_arg:=if mode <> 2 and mode <> 3 then
  _        2*arg
  _        else
  _        2*cos(arg);  

  hr:=
  hr1:=0;  

  for t:=g step -1 until ts do
  begin
    hr2:=hr1;  
    hr1:=hr;  
    hr:=a(t) + cos_arg*hr1 - hr2;  
  end;  

\f



comment clenshawtx            * page 2   22 11 77,  9.31
0 1 2 3 4 5 6 7 8 9 ;  

  clenshaw:=if mode <> 2 then
  _         hr - cos_arg*hr1/2
  _         else
  _         hr*sin(arg);  

end clenshaw;  

end

if warning.yes
(mode 0.yes
message clenshaw not ok
lookup clenshaw)

▶EOF◀