
John Maddock wrote:
Joel Eidsath wrote:
Paul A. Bristow wrote:
This looks too obviously lifted from NR in C (or FORTRAN) to fit the Boost license.
Yes, as I mentioned, it's from a NR FORTRAN recipe. I don't know if the conversion from FORTRAN to C++ makes it a non-derivative work. The code certainly wouldn't work in poisson_distribution.hpp as is.
A direct or mechanical conversion almost certainly does make it a derived work of the NR original: the best way is to go back to the original reference if possible and work from there. One recent reference is:
Ahrens, J.H. and Dieter, U. (1982). Computer generation of Poisson deviates from modified normal distributions. ACM Trans. Math. Software 8, 163-179.
But the algorithm should still be usable? (But I am not qualified to judge).
If not, then at least the fix (in the original part of my post) should be used.
Right now, using [random] poisson_distribution is slow and dangerous for any mean over 750. If it is changed to use ln instead of exp, it will only be slow. That is completely unrelated to the NR code later on in my post, which is a (serious) speed optimization.
ln gamma (and poisson) is available from the Math Toolkit, but this is a random requirement and you may value speed more than accuracy?
I don't see any way to use the Math Toolkit poisson distribution code to actually generate poisson random variables.
You *could* apply the poisson quantile to a uniformly distributed variable to obtain a poisson one, but I wouldn't honestly recommend it for that purpose :-/
I'll look into the Poisson PDF issue,
You may find this useful: http://statistik.wu-wien.ac.at/unuran