id summary reporter owner description type status milestone component version severity resolution keywords cc 13148 Zero value cannot be converted from cpp_dec_float_50 to cpp_rational Lev Sch John Maddock "String ""boost::multiprecision::cpp_rational result(d1);"" eats CPU forever. It is reproduced on boost_1_65_0_beta1 and boost_1_64_0. {{{ boost::multiprecision::cpp_rational rationalfromStr(const char* str) { boost::multiprecision::cpp_dec_float_50 d1(str); boost::multiprecision::cpp_rational result(d1); // <--- eats CPU forever return result; } void test() { // this example is OK { boost::multiprecision::cpp_rational expected=1; assert(expected == rationalfromStr(""1"")); } // this example is OK { boost::multiprecision::cpp_rational expected=boost::multiprecision::cpp_rational(25)/boost::multiprecision::cpp_rational(10); assert(expected == rationalfromStr(""2.5"")); } // this example is OK { boost::multiprecision::cpp_rational expected=boost::multiprecision::cpp_rational(5)/boost::multiprecision::cpp_rational(1000); assert(expected == rationalfromStr(""0.005"")); } // this example is OK { boost::multiprecision::cpp_rational expected=0; assert(expected == boost::multiprecision::cpp_rational(""0"")); // direct cpp_rational from str is ok } // this example fails { boost::multiprecision::cpp_rational expected=0; // reacheble code assert(expected == rationalfromStr(""0"")); // cpp_rational from cpp_dec_float_50 is not ok // unreacheble code } } }}} " Bugs closed To Be Determined multiprecision Boost 1.64.0 Problem fixed