diff --git a/include/real/real_math.hpp b/include/real/real_math.hpp index 15012a7..0811fc1 100755 --- a/include/real/real_math.hpp +++ b/include/real/real_math.hpp @@ -201,8 +201,17 @@ namespace boost{ return literals::zero_exact; } - // initial guess - exact_number result(x.digits, (x.exponent + 1)/2, true); + // initial guess using scalar estimate + exact_number result; + if(x.exponent%2==0) + { + if(x.digits[0]>=1) + result=exact_number (std::vector {6}, (x.exponent)/2, true); + else + result=exact_number (std::vector {2}, (x.exponent)/2, true); + } + else + result=exact_number(std::vector {2}, (x.exponent-1)/2, true); exact_number error; exact_number max_error(std::vector {1}, -max_error_exponent, true);