Charlier polynomials,
C_{n}(x; α),
α > 0, are orthogonal on the support interval
[0,∞) with weight function
w(x) = exp(α) Σ_{n=0}^{∞}[ x^{α} / x! ] &delta(x  n) 

and normalized by the requirement that the leading coefficient
C_{n}(x; α) is
(1 / α)^{n}.
C_{n}(x; α) satisfies the threeterm recurrence relation
α C_{n+1}(x; α) = (n + α  x) C_{n}(x; α)  n C_{n1}(x; α)  for n ≥ 1 

with starting values
C_{0}(x; α) = 1,  C_{1}(x; α) = 1  x / α. 

 double Charlier_Cn( double x, double alpha, int n )
This function returns C_{n}(x; α) where C_{n}(x; α) is described above.
 long double xCharlier_Cn( long double x, long double alpha, int n )
This function returns C_{n}(x; α) where C_{n}(x; α) is described above.
 void Charlier_Cn_Sequence( double C[ ], double x, double alpha, int max_n )
This function returns C_{n}(x; α), for n = 0, 1, …, max_n in the array C[ ] where C_{n}(x; α) is described above. Note that C[ ] should be declared as double C[N] where
N ≥ max_n + 1._{ }
 void xCharlier_Cn_Sequence( long double C[ ], long double x, long double alpha, int max_n )
This function returns C_{n}(x; α), for n = 0, 1, …, max_n in the array C[ ] where C_{n}(x; α) is described above. Note that C[ ] should be declared as long double C[N] where
N ≥ max_n + 1._{ }
 double Charlier_Cn_Series( double x, double alpha, double a[ ], int degree)
This function returns Σ_{k=0}^{n}a[k] C_{k}(x; α) where n = degree and C_{k}(x; α) for k = 0, …, n is described above._{ }
 long double xCharlier_Cn_Series( long double x, long double alpha, long double a[ ], int degree )
This function returns Σ_{k=0}^{n}a[k] C_{k}(x; α) where n = degree and C_{k}(x; α) for k = 0, …, n is described above._{ }
C source code is available for these routines: