Ticket #6151 (closed Bugs: fixed)
Wrong output from boot::math, cdf(complement(laplace_distribuiton<>(...))
Reported by: | Yan Zhou <zhouyan@…> | Owned by: | pbristow |
---|---|---|---|
Milestone: | Boost 1.49.0 | Component: | math |
Version: | Boost 1.48.0 | Severity: | Problem |
Keywords: | laplace distribution | Cc: |
Description
To illustrate the bug, see the following code,
#include <boost/math/distributions/laplace.hpp> #include <iostream> int main () { boost::math::laplace lap(1, 1); std::cout << boost::math::cdf(lap, 1) << std::endl; std::cout << boost::math::cdf(boost::math::complement(lap, 1)) << std::endl; return 0; }
The output should be two numbers sum up to 1. Instead, it print
0.5 (this is correct) 0.0676676 (this is wrong)
I have double read the boost::math documents, to make sure that I didn't misused the library. Hopefully I am not making a stupid mistake here. Otherwise, the bug looks so stupid to me that I still don't believe this is a bug in boost::math, instead I did something wrong here.
Attachments
Change History
Changed 2 years ago by Yan Zhou <zhouyan@…>
- attachment laplace.patch added
comment:1 Changed 2 years ago by Yan Zhou <zhouyan@…>
- Owner set to johnmaddock
- Component changed from None to math
comment:2 Changed 2 years ago by johnmaddock
- Owner changed from johnmaddock to pbristow
Ouch. Nasty bug.
Paul, did you work on this one? I can't remember now, except I don't think I've touched it...
comment:3 Changed 2 years ago by pbristow
OK, looks like a bug, and I think I wrote it, so will look at it soon.
comment:4 Changed 2 years ago by pbristow
Ok I did some work on this, but Thijs did most of it ;-)
Thanks for Yan Zhou for patch which looks good. Test adjusted (previous test was wrong too) and now passes cdf + complement == 1 for a range of scale, location, x and p, cdf and quantiles.
Both committed to trunk At revision: 75592
fix the bug