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,,