#6937 closed Bugs (fixed)
Wrong cdf/pdf/quantile domain checks for some probability distributions
| Reported by: | Owned by: | John Maddock | |
|---|---|---|---|
| Milestone: | Boost 1.52.0 | Component: | math |
| Version: | Boost 1.49.0 | Severity: | Problem |
| Keywords: | Cc: | pbristow@… |
Description
students_t_distribution and fisher_f_distribution are affected, and possibly others (have not checked yet).
quantile(const students_t[...]) contains the following code:
if(false == detail::check_df(
function, degrees_of_freedom, &error_result, Policy())
&& detail::check_probability(function, probability, &error_result, Policy()))
return error_result;
quantile(const fisher_f[...]) contains:
if(false == detail::check_df(
function, df1, &error_result, Policy())
&& detail::check_df(
function, df2, &error_result, Policy())
&& detail::check_probability(
function, p, &error_result, Policy()))
return error_result;
The code snippets above would only be correct if the "&&" operator had precedence over "==". pdf and cdf contain code of the same form.
Side effects:
- The Student's t
quantile()can be called with a probability outside of [0,1] with unexpected results. Example:#include <boost/math/distributions/students_t.hpp> using namespace boost::math; int main() { std::cout << quantile(students_t(1), 2) << std::endl; }
The output is: -1.84467e+19
- The Fisher F
quantile()function, when called with probability NaN and parameters 1 and 1, leads to a failed BOOST_ASSERT. Example:#include <boost/math/distributions/fisher_f.hpp> using namespace boost::math; int main() { quantile(fisher_f(1, 1), std::numeric_limits<double>::quiet_NaN()); }
Change History (5)
comment:1 by , 10 years ago
| Cc: | added |
|---|---|
| Milestone: | To Be Determined → Boost 1.51.0 |
| Status: | new → assigned |
comment:2 by , 10 years ago
comment:3 by , 10 years ago
comment:4 by , 10 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
I believe this is now fixed in Trunk.
comment:5 by , 10 years ago
| Milestone: | Boost 1.51.0 → Boost 1.52.0 |
|---|
Note:
See TracTickets
for help on using tickets.

Oh dear!
This looks to be a systematic error through all the distributions.
Paul - looks like we need to: