Geant4-11
nf_polevl.cc
Go to the documentation of this file.
1/* polevl.c
2 * p1evl.c
3 *
4 * Evaluate polynomial
5 *
6 *
7 * SYNOPSIS:
8 *
9 * int N;
10 * double x, y, coef[N+1], nf_polevl[];
11 *
12 * y = nf_polevl( x, coef, N );
13 *
14 *
15 * DESCRIPTION:
16 *
17 * Evaluates polynomial of degree N:
18 *
19 * 2 N
20 * y = C + C x + C x +...+ C x
21 * 0 1 2 N
22 *
23 * Coefficients are stored in reverse order:
24 *
25 * coef[0] = C , ..., coef[N] = C .
26 * N 0
27 *
28 * The function p1evl() assumes that coef[N] = 1.0 and is
29 * omitted from the array. Its calling arguments are
30 * otherwise the same as nf_polevl().
31 *
32 */
33
34/*
35Cephes Math Library Release 2.1: December, 1988
36Copyright 1984, 1987, 1988 by Stephen L. Moshier
37Direct inquiries to 30 Frost Street, Cambridge, MA 02140
38*/
39#include "nf_specialFunctions.h"
40
41#if defined __cplusplus
42namespace GIDI {
43using namespace GIDI;
44#endif
45
46double nf_polevl( double x, double coef[], int N ) {
47
48 double ans;
49 int i;
50 double *p;
51
52 p = coef;
53 ans = *p++;
54 i = N;
55
56 do {
57 ans = ans * x + *p++; }
58 while( --i ); // Loop checking, 11.06.2015, T. Koi
59
60 return( ans );
61}
62
63/*
64************************************************************
65*/
66/* Evaluate polynomial when coefficient of x^N is 1.0. Otherwise same as polevl. */
67double nf_p1evl( double x, double coef[], int N ) {
68
69 double ans;
70 double *p;
71 int i;
72
73 p = coef;
74 ans = x + *p++;
75 i = N-1;
76
77 do {
78 ans = ans * x + *p++; }
79 while( --i ); // Loop checking, 11.06.2015, T. Koi
80
81 return( ans );
82}
83
84#if defined __cplusplus
85}
86#endif
double nf_polevl(double x, double coef[], int N)
Definition: nf_polevl.cc:46
double nf_p1evl(double x, double coef[], int N)
Definition: nf_polevl.cc:67