Geant4  10.03
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 /*
35 Cephes Math Library Release 2.1: December, 1988
36 Copyright 1984, 1987, 1988 by Stephen L. Moshier
37 Direct inquiries to 30 Frost Street, Cambridge, MA 02140
38 */
39 #include "nf_specialFunctions.h"
40 
41 #if defined __cplusplus
42 namespace GIDI {
43 using namespace GIDI;
44 #endif
45 
46 double 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. */
67 double 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