#6934 closed Bugs (fixed)
quantile() on an inverse_gaussian_distribution<RealType, Policy> object does not compile
Reported by: | Owned by: | John Maddock | |
---|---|---|---|
Milestone: | Boost 1.52.0 | Component: | math |
Version: | Boost 1.50.0 | Severity: | Problem |
Keywords: | Cc: | pbristow@… |
Description
quantile()
creates an object of type inverse_gaussian_quantile_functor<RealType>
, the constructor of which expects an argument of type inverse_gaussian_distribution<RealType, policies::policy<> >
. Therefore, quantile()
cannot be used with a custom policy, because inverse_gaussian_distribution<RealType, Policy>
cannot usually be cast to inverse_gaussian_distribution<RealType, policies::policy<> >
.
Example:
#include <boost/math/distributions/inverse_gaussian.hpp> using namespace boost::math; using namespace boost::math::policies; typedef policy< domain_error<errno_on_error> > my_policy; int main() { quantile(inverse_gaussian_distribution<double, my_policy>(), .5); }
Change History (11)
comment:1 by , 10 years ago
Cc: | added |
---|---|
Status: | new → assigned |
comment:2 by , 10 years ago
The following patch updates our tests to show the error:
Index: distribution_concept_check.cpp =================================================================== --- distribution_concept_check.cpp (revision 78472) +++ distribution_concept_check.cpp (working copy) @@ -16,26 +16,28 @@ using namespace boost::math; using namespace boost::math::concepts; - function_requires<DistributionConcept<normal_distribution<RealType> > >(); - function_requires<DistributionConcept<beta_distribution<RealType> > >(); - function_requires<DistributionConcept<binomial_distribution<RealType> > >(); - function_requires<DistributionConcept<cauchy_distribution<RealType> > >(); - function_requires<DistributionConcept<bernoulli_distribution<RealType> > >(); - function_requires<DistributionConcept<chi_squared_distribution<RealType> > >(); - function_requires<DistributionConcept<exponential_distribution<RealType> > >(); - function_requires<DistributionConcept<extreme_value_distribution<RealType> > >(); - function_requires<DistributionConcept<fisher_f_distribution<RealType> > >(); - function_requires<DistributionConcept<gamma_distribution<RealType> > >(); - function_requires<DistributionConcept<students_t_distribution<RealType> > >(); - function_requires<DistributionConcept<pareto_distribution<RealType> > >(); - function_requires<DistributionConcept<poisson_distribution<RealType> > >(); - function_requires<DistributionConcept<rayleigh_distribution<RealType> > >(); - function_requires<DistributionConcept<weibull_distribution<RealType> > >(); - function_requires<DistributionConcept<lognormal_distribution<RealType> > >(); - function_requires<DistributionConcept<triangular_distribution<RealType> > >(); - function_requires<DistributionConcept<uniform_distribution<RealType> > >(); - function_requires<DistributionConcept<negative_binomial_distribution<RealType> > >(); - function_requires<DistributionConcept<non_central_chi_squared_distribution<RealType> > >(); + typedef policies::policy<policies::digits2<std::numeric_limits<RealType>::digits - 2> > custom_policy; + + function_requires<DistributionConcept<normal_distribution<RealType, custom_policy> > >(); + function_requires<DistributionConcept<beta_distribution<RealType, custom_policy> > >(); + function_requires<DistributionConcept<binomial_distribution<RealType, custom_policy> > >(); + function_requires<DistributionConcept<cauchy_distribution<RealType, custom_policy> > >(); + function_requires<DistributionConcept<bernoulli_distribution<RealType, custom_policy> > >(); + function_requires<DistributionConcept<chi_squared_distribution<RealType, custom_policy> > >(); + function_requires<DistributionConcept<exponential_distribution<RealType, custom_policy> > >(); + function_requires<DistributionConcept<extreme_value_distribution<RealType, custom_policy> > >(); + function_requires<DistributionConcept<fisher_f_distribution<RealType, custom_policy> > >(); + function_requires<DistributionConcept<gamma_distribution<RealType, custom_policy> > >(); + function_requires<DistributionConcept<students_t_distribution<RealType, custom_policy> > >(); + function_requires<DistributionConcept<pareto_distribution<RealType, custom_policy> > >(); + function_requires<DistributionConcept<poisson_distribution<RealType, custom_policy> > >(); + function_requires<DistributionConcept<rayleigh_distribution<RealType, custom_policy> > >(); + function_requires<DistributionConcept<weibull_distribution<RealType, custom_policy> > >(); + function_requires<DistributionConcept<lognormal_distribution<RealType, custom_policy> > >(); + function_requires<DistributionConcept<triangular_distribution<RealType, custom_policy> > >(); + function_requires<DistributionConcept<uniform_distribution<RealType, custom_policy> > >(); + function_requires<DistributionConcept<negative_binomial_distribution<RealType, custom_policy> > >(); + function_requires<DistributionConcept<non_central_chi_squared_distribution<RealType, custom_policy> > >(); } Index: instantiate.hpp =================================================================== --- instantiate.hpp (revision 78527) +++ instantiate.hpp (working copy) @@ -18,7 +18,7 @@ #ifndef BOOST_MATH_INSTANTIATE_MINIMUM -typedef boost::math::policies::policy<> test_policy; +typedef boost::math::policies::policy<boost::math::policies::promote_float<false>, boost::math::policies::promote_double<false> > test_policy; namespace test{
Then try and compile either std_real_concept_check.cpp or test_instantiate1.cpp. Thankfully the inverse_gaussian distro is the only thing that fails.
I haven't committed the above patch, because it'll break the regression tests at present.
John.
comment:3 by , 10 years ago
Thanks for this report. Added template parameter Policy to two functors and test program provided now compiles and runs.
Command: Commit Modified: I:\boost-trunk\boost\math\distributions\inverse_gaussian.hpp Sending content: I:\boost-trunk\boost\math\distributions\inverse_gaussian.hpp Completed: At revision: 78579
(This might not make 1.50 because John Maddock is away. Sorry :-(.
(Also need commit of patch above to confirm meets the full cncept check).
comment:4 by , 10 years ago
Milestone: | To Be Determined → Boost 1.50.0 |
---|---|
Resolution: | → fixed |
Status: | assigned → closed |
Version: | Boost 1.49.0 → Boost 1.50.0 |
comment:5 by , 10 years ago
(In [78711]) Update concept checks to unmask issues reported in #6934. Add some distributions to the concept tests that were missing before. Add skew_normal_distribution to distributions.hpp. Fix some errors in calculating custom policies when the defaults have been changed. Fix the errors and warnings that result from the above. Refs #6934.
comment:6 by , 10 years ago
comment:7 by , 10 years ago
comment:8 by , 10 years ago
comment:9 by , 10 years ago
comment:11 by , 10 years ago
Milestone: | Boost 1.50.0 → Boost 1.52.0 |
---|
Confirmed.
Not sure how this slipped through our concept checks.... will investigate.
Paul did you write this one? If so can I let you fix?