id summary reporter owner description type status milestone component version severity resolution keywords cc 8326 returned value of pow() is wrong if argument-variable is reused to accept. pjtsu John Maddock "If argument-variable is reuse directly, pow(2, 10) returns 1.[[BR]] Sample code is the following. {{{ #include #include #include #include int main() { typedef boost::multiprecision::number > MY_FLOAT_TYPE; const double var1 = 2; const double var2 = 10; // OK (equal to 1024) { MY_FLOAT_TYPE a = var1; MY_FLOAT_TYPE b = var2; MY_FLOAT_TYPE c = pow(a, b); std::cout << ""result1="" << c << std::endl; a = c; // reusing variable 'a' indirectly. std::cout << ""result2="" << a << std::endl; } // NG (not equal to 1024) { MY_FLOAT_TYPE a = var1; MY_FLOAT_TYPE b = var2; a = pow(a, b); // reusing variable 'a' directly. std::cout << ""result3="" << a << std::endl; } return 0; } }}} Output is the following. {{{ result1=1024 result2=1024 result3=1 }}} Incidentally, output of pow(2, 0.5) is the following. Similar problem happened. {{{ result1=1.41421 result2=1.41421 result3=1.18921 }}} I found this problem on Visual Studio 2010 and Linux gcc 4.4.7.[[BR]] I found similar problem with '''mpf_float''' on Linux gcc 4.4.7.[[BR]] " Bugs closed To Be Determined multiprecision Boost 1.53.0 Problem fixed