Вы создали экземпляр x
с двоичным двойным значением, которое не представляется в виде десятичного числа. Вот как это исправить:
#include <iostream>
#include <boost/multiprecision/cpp_dec_float.hpp>
using boost::multiprecision::cpp_dec_float_50;
int main()
{
std::cout << std::setprecision(std::numeric_limits<cpp_dec_float_50>::digits10);
cpp_dec_float_50 x{"0.0001"};
cpp_dec_float_50 y = x*x*x*x;
std::cout << std::fixed;
std::cout << y << "\n";
}
Вывод:
0.00000000000000010000000000000000000000000000000000