http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56202
--- Comment #12 from Paolo Carlini <paolo.carlini at oracle dot com> 2013-02-04 19:23:38 UTC --- Ok, thanks Manuel. Let's go with this follow up then, mainline only. If nothing bad is reported may be suited for the branch too: Index: include/bits/random.h =================================================================== --- include/bits/random.h (revision 195721) +++ include/bits/random.h (working copy) @@ -3770,7 +3770,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @brief A discrete binomial random number distribution. * * The formula for the binomial probability density function is - * @f$p(i|t,p) = \binom{n}{i} p^i (1 - p)^{t - i}@f$ where @f$t@f$ + * @f$p(i|t,p) = \binom{t}{i} p^i (1 - p)^{t - i}@f$ where @f$t@f$ * and @f$p@f$ are the parameters of the distribution. */ template<typename _IntType = int> Index: include/bits/random.tcc =================================================================== --- include/bits/random.tcc (revision 195722) +++ include/bits/random.tcc (working copy) @@ -1657,13 +1657,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION do { + if (__t == __x) + return __x; const double __e = -std::log(1.0 - __aurng()); - if (__t == __x) - { - if (__e) - return __x; - continue; - } __sum += __e / (__t - __x); __x += 1; }