double precision function dcsevl (x, a, n) c c evaluate the n-term chebyshev series a at x. adapted from c r. broucke, algorithm 446, c.a.c.m., 16, 254 (1973). c c input arguments -- c x dble prec value at which the series is to be evaluated. c a dble prec array of n terms of a chebyshev series. in eval- c uating a, only half the first coef is summed. c n number of terms in array a. c double precision a(n), x, twox, b0, b1, b2 c if (n.lt.1) call seteru (28hdcsevl number of terms le 0, 28, 2,2) if (n.gt.1000) call seteru (31hdcsevl number of terms gt 1000, 1 31, 3, 2) if (x.lt.(-1.1d0) .or. x.gt.1.1d0) call seteru ( 1 25hdcsevl x outside (-1,+1), 25, 1, 1) c twox = 2.0d0*x b1 = 0.d0 b0 = 0.d0 do 10 i=1,n b2 = b1 b1 = b0 ni = n - i + 1 b0 = twox*b1 - b2 + a(ni) 10 continue c dcsevl = 0.5d0 * (b0-b2) c return end