#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: