Mike Giles - Fast evaluation of the inverse Poisson CDF
Fast evaluation of the inverse Poisson CDF
The function
normcdfinv(u)
in NVIDIA's
CUDA maths library
(and similar functions in various libraries for CPU execution)
computes the inverse of the cumulative distribution function (CDF)
for the Normal distribution.
It can be used to convert uniformly distributed pseudo-random
(or quasi-random) numbers into psuedo-random (or quasi-random) Normals.
Here I present an article, and associated software, on algorithms
for a function poissinv(u) which performs the corresponding task for
Poisson distributions, and can be used to generate Poisson random variates.
MATLAB codes used to construct approximations, validate them, or prepare figures for the paper:
asymp.m -- generates Normal asymptotic approximations
approx.m -- generates approximations based on inverse of Temme approximation
figs.m -- generates a number of figures for the paper
temme.m -- implements and tests the accuracy of Temme's asymptotic
approximation to the incomplete Gamma function
as241.m -- implements and tests the accuracy of
Algorithm AS241
to compute the inverse of the Normal CDF function
Licensing
The poissinv_cuda.h and poissinv.h header files are freely available to all under a
GPL license. It will be provided to NVIDIA under a permissive BSD license --
anyone else requiring a more permissive license for commercial purposes should contact me.
I would be grateful if academic users would cite the paper above, once it has been published.