csevl.f
1.04 KB
function csevl (x, cs, n)
c april 1977 version. w. fullerton, c3, los alamos scientific lab.
c
c evaluate the n-term chebyshev series cs at x. adapted from
c r. broucke, algorithm 446, c.a.c.m., 16, 254 (1973). also see fox
c and parker, chebyshev polys in numerical analysis, oxford press, p.56.
c
c input arguments --
c x value at which the series is to be evaluated.
c cs array of n terms of a chebyshev series. in eval-
c uating cs, only half the first coef is summed.
c n number of terms in array cs.
c
dimension cs(1)
c
if (n.lt.1) call seteru (28hcsevl number of terms le 0, 28, 2,2)
if (n.gt.1000) call seteru (31hcsevl number of terms gt 1000,
1 31, 3, 2)
if (x.lt.(-1.1) .or. x.gt.1.1) call seteru (
1 25hcsevl x outside (-1,+1), 25, 1, 1)
c
b1 = 0.
b0 = 0.
twox = 2.*x
do 10 i=1,n
b2 = b1
b1 = b0
ni = n + 1 - i
b0 = twox*b1 - b2 + cs(ni)
10 continue
c
csevl = 0.5 * (b0-b2)
c
return
end