From 6bb9234e718d4b75a9a1e63d523d08c3392ba55f Mon Sep 17 00:00:00 2001 From: paolo Date: Sat, 26 Mar 2011 10:02:34 +0000 Subject: [PATCH 008/200] 2011-03-26 Paolo Carlini * include/bits/random.h (negative_binomial_distribution<>:: negative_binomial_distribution(_IntType, double), negative_binomial_distribution<>:: negative_binomial_distribution(const param_type&)): Fix thinko p / (1 - p) for (1 - p) / p. * include/bits/random.tcc (negative_binomial_distribution<>:: operator()): Fix. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171553 138bc75d-0d04-0410-961f-82ee72b054a4 index 26cec8a..988ee61 100644 --- a/libstdc++-v3/include/bits/random.h +++ b/libstdc++-v3/include/bits/random.h @@ -3782,7 +3782,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION explicit param_type(_IntType __k = 1, double __p = 0.5) : _M_k(__k), _M_p(__p) - { } + { + _GLIBCXX_DEBUG_ASSERT((_M_k > 0) && (_M_p > 0.0) && (_M_p <= 1.0)); + } _IntType k() const @@ -3803,12 +3805,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION explicit negative_binomial_distribution(_IntType __k = 1, double __p = 0.5) - : _M_param(__k, __p), _M_gd(__k, __p / (1.0 - __p)) + : _M_param(__k, __p), _M_gd(__k, (1.0 - __p) / __p) { } explicit negative_binomial_distribution(const param_type& __p) - : _M_param(__p), _M_gd(__p.k(), __p.p() / (1.0 - __p.p())) + : _M_param(__p), _M_gd(__p.k(), (1.0 - __p.p()) / __p.p()) { } /** diff --git a/libstdc++-v3/include/bits/random.tcc b/libstdc++-v3/include/bits/random.tcc index 4b17e91..e81392f 100644 --- a/libstdc++-v3/include/bits/random.tcc +++ b/libstdc++-v3/include/bits/random.tcc @@ -1100,7 +1100,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION param_type; const double __y = - _M_gd(__urng, param_type(__p.k(), __p.p() / (1.0 - __p.p()))); + _M_gd(__urng, param_type(__p.k(), (1.0 - __p.p()) / __p.p())); std::poisson_distribution __poisson(__y); return __poisson(__urng); -- 1.7.0.4