Ticket #12777: uniform-random-real.patch
File uniform-random-real.patch, 1.2 KB (added by , 6 years ago) |
---|
-
boost/random/uniform_real_distribution.hpp
old new 55 55 typedef T result_type; 56 56 typedef typename Engine::result_type base_result; 57 57 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); 59 59 BOOST_ASSERT(divisor > 0); 60 60 BOOST_ASSERT(numerator >= 0 && numerator <= divisor); 61 61 T result = numerator / divisor * (max_value - min_value) + min_value; … … 67 67 inline T generate_uniform_real(Engine& eng, T min_value, T max_value) 68 68 { 69 69 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))); 71 71 typedef typename Engine::result_type base_result; 72 72 return generate_uniform_real(eng, min_value, max_value, 73 73 boost::is_integral<base_result>());