Opened 9 years ago

Closed 9 years ago

Last modified 9 years ago

#9833 closed Bugs (fixed)

"leaking exception" (eg. geometric distribution)

Reported by: HS Tan <tan@…> Owned by: John Maddock
Milestone: To Be Determined Component: math
Version: Boost Development Trunk Severity: Showstopper
Keywords: Cc:

Description

Sorry to label this outright as a "bug" ... it might just be my misunderstanding.

Consider the code included below ... please save it as-is as test.cpp and build it with: g++ -o test test.cpp. Then uncomment the #define USE_CONFIG_FILE on the first line and repeat the above process to see the issue.

Thank you.
HS

// #define USE_CONFIG_FILE 1

#ifdef USE_CONFIG_FILE
#include <boost/math/distributions.hpp>
#include <boost/math/policies/policy.hpp>

namespace test
{
using namespace boost::math::policies;

typedef policy<
   domain_error< ignore_error >,
   overflow_error< ignore_error >,
   discrete_quantile< integer_round_up >
> my_boost_policy;

BOOST_MATH_DECLARE_DISTRIBUTIONS( double, my_boost_policy );
}
#else
#define BOOST_MATH_DOMAIN_ERROR_POLICY ignore_error
#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
#define BOOST_MATH_DISCRETE_QUANTILE_POLICY integer_round_up
#endif

#include <cstdlib>
#include <cstdio>

#include <boost/math/distributions/geometric.hpp>

int main()
{
   double _p0 = 1.0;
   double _x = 0.0;

#ifdef USE_CONFIG_FILE
   test::geometric _dist( _p0 );
#else
   boost::math::geometric_distribution<> _dist( _p0 );
#endif /* USE_CONFIG_FILE */

   std::printf(
         "\n"
         "   1-CDF(0,false): %g\n",
         boost::math::cdf(
            boost::math::complement(
               _dist,
               _x ) ) );

   std::printf(
         "   CDF(0,false): %g\n\n",
         boost::math::cdf( _dist, _x ) );

   return EXIT_SUCCESS;
}

Change History (2)

comment:1 by John Maddock, 9 years ago

Resolution: fixed
Status: newclosed

in reply to:  1 comment:2 by HS <tan@…>, 9 years ago

Thanks for the quick action!

With best regards,
HS

Note: See TracTickets for help on using tickets.