Change an internal table of constants for the poisson distribution from
type 'result_type' to 'double'. The only thing that we ever do with these numbers is to promote them to 'double' and use them in a division. For small result_types, the values were getting truncated, skewing the results. Thanks to James Nagurne for the suggestion. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@322556 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -4673,7 +4673,7 @@ poisson_distribution<_IntType>::operator()(_URNG& __urng, const param_type& __pr
|
|||||||
double __py;
|
double __py;
|
||||||
if (__x < 10)
|
if (__x < 10)
|
||||||
{
|
{
|
||||||
const result_type __fac[] = {1, 1, 2, 6, 24, 120, 720, 5040,
|
const double __fac[] = {1, 1, 2, 6, 24, 120, 720, 5040,
|
||||||
40320, 362880};
|
40320, 362880};
|
||||||
__px = -__pr.__mean_;
|
__px = -__pr.__mean_;
|
||||||
__py = _VSTD::pow(__pr.__mean_, (double)__x) / __fac[__x];
|
__py = _VSTD::pow(__pr.__mean_, (double)__x) / __fac[__x];
|
||||||
|
|||||||
Reference in New Issue
Block a user