On 29/07/14 04:11 -0400, Ed Smith-Rowland wrote:
As discussed in the audit trail both _Adaptor and generate_canonical
are both meant to use floating point values. Both are here given
static_asserts to that effect.
This would have prevented this error and might help future users.
The main issue is the use of value_type in _Adaptor and thus in
generate_canonical in hypergeometric_distribution::operator(). This
distribution is a discreet distribution and thus value_type is an
unsigned integer which caused overflow in generate_canonical. In
keeping with practice in all other discreet distributions a double
type will now be used in _Adaptor.
Someday, it might be beneficial to discuss an _IntegralAdaptor and a
corresponding __generate_canonical for use in our discreet
distributions but I want to close this bug with this patch.
Makes sense, thanks for the fix.
Built and tested on x86_64-linux.
OK?
One question ...
Index: testsuite/ext/random/hypergeometric_distribution/pr60037.cc
===================================================================
--- testsuite/ext/random/hypergeometric_distribution/pr60037.cc (revision 0)
+++ testsuite/ext/random/hypergeometric_distribution/pr60037.cc (working copy)
@@ -0,0 +1,24 @@
+// { dg-options "-std=gnu++11" }
+// { dg-require-cstdint "" }
+// { dg-require-cmath "" }
+// { dg-options "-O0" }
Did you mean to have two separate dg-options directives here?
OK to commit, after either combining them into one or removing the
second one.