Ticket #12777: uniform-random-real.patch

File uniform-random-real.patch, 1.2 KB (added by b7.10110111@…, 6 years ago)

Proposed patch

  • boost/random/uniform_real_distribution.hpp

    old new  
    5555        typedef T result_type;
    5656        typedef typename Engine::result_type base_result;
    5757        result_type numerator = static_cast<T>(subtract<base_result>()(eng(), (eng.min)()));
    58         result_type divisor = static_cast<T>(subtract<base_result>()((eng.max)(), (eng.min)())) + 1;
     58        result_type divisor = result_type(static_cast<T>(subtract<base_result>()((eng.max)(), (eng.min)())) + 1);
    5959        BOOST_ASSERT(divisor > 0);
    6060        BOOST_ASSERT(numerator >= 0 && numerator <= divisor);
    6161        T result = numerator / divisor * (max_value - min_value) + min_value;
     
    6767inline T generate_uniform_real(Engine& eng, T min_value, T max_value)
    6868{
    6969    if(max_value / 2 - min_value / 2 > (std::numeric_limits<T>::max)() / 2)
    70         return 2 * generate_uniform_real(eng, T(min_value / 2), T(max_value / 2));
     70        return T(2 * generate_uniform_real(eng, T(min_value / 2), T(max_value / 2)));
    7171    typedef typename Engine::result_type base_result;
    7272    return generate_uniform_real(eng, min_value, max_value,
    7373        boost::is_integral<base_result>());