source: sasview/src/sans/models/c_extension/cephes/chbevl.c @ 29b6cbd

ESS_GUIESS_GUI_DocsESS_GUI_batch_fittingESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_iss879ESS_GUI_iss959ESS_GUI_openclESS_GUI_orderingESS_GUI_sync_sascalccostrafo411magnetic_scattrelease-4.1.1release-4.1.2release-4.2.2release_4.0.1ticket-1009ticket-1094-headlessticket-1242-2d-resolutionticket-1243ticket-1249ticket885unittest-saveload
Last change on this file since 29b6cbd was 230f479, checked in by Mathieu Doucet <doucetm@…>, 11 years ago

Rename C source dir for models (minor updates)

  • Property mode set to 100644
File size: 1.6 KB
Line 
1/*                                                      chbevl.c
2 *
3 *      Evaluate Chebyshev series
4 *
5 *
6 *
7 * SYNOPSIS:
8 *
9 * int N;
10 * double x, y, coef[N], chebevl();
11 *
12 * y = chbevl( x, coef, N );
13 *
14 *
15 *
16 * DESCRIPTION:
17 *
18 * Evaluates the series
19 *
20 *        N-1
21 *         - '
22 *  y  =   >   coef[i] T (x/2)
23 *         -            i
24 *        i=0
25 *
26 * of Chebyshev polynomials Ti at argument x/2.
27 *
28 * Coefficients are stored in reverse order, i.e. the zero
29 * order term is last in the array.  Note N is the number of
30 * coefficients, not the order.
31 *
32 * If coefficients are for the interval a to b, x must
33 * have been transformed to x -> 2(2x - b - a)/(b-a) before
34 * entering the routine.  This maps x from (a, b) to (-1, 1),
35 * over which the Chebyshev polynomials are defined.
36 *
37 * If the coefficients are for the inverted interval, in
38 * which (a, b) is mapped to (1/b, 1/a), the transformation
39 * required is x -> 2(2ab/x - b - a)/(b-a).  If b is infinity,
40 * this becomes x -> 4a/x - 1.
41 *
42 *
43 *
44 * SPEED:
45 *
46 * Taking advantage of the recurrence properties of the
47 * Chebyshev polynomials, the routine requires one more
48 * addition per loop than evaluating a nested polynomial of
49 * the same degree.
50 *
51 */
52/*                                                     chbevl.c        */
53
54/*
55Cephes Math Library Release 2.0:  April, 1987
56Copyright 1985, 1987 by Stephen L. Moshier
57Direct inquiries to 30 Frost Street, Cambridge, MA 02140
58*/
59
60double chbevl( x, array, n )
61double x;
62double array[];
63int n;
64{
65double b0, b1, b2, *p;
66int i;
67
68p = array;
69b0 = *p++;
70b1 = 0.0;
71i = n - 1;
72
73do
74        {
75        b2 = b1;
76        b1 = b0;
77        b0 = x * b1  -  b2  + *p++;
78        }
79while( --i );
80
81return( 0.5*(b0-b2) );
82}
Note: See TracBrowser for help on using the repository browser.