Como usar o sqrt e o teto com o Boost :: multiprecision?
Você sabe como fazer essa linha de código simples sem erros usando o Boost :: multiprecison?
boost::multiprecision::cpp_int v, uMax, candidate;
//...
v += 6 * ceil((sqrt(uMax * uMax - candidate) - v) / 6);
Usando o MSVC, há um erro para "sqrt" e é possível corrigi-lo com:
v += 6 * ceil((sqrt(static_cast<boost::multiprecision::cpp_int>(uMax * uMax - candidate)) - v) / 6);
Há um erro para "ceil" e é possível corrigi-lo com:
namespace bmp = boost::multiprecision;
typedef bmp::number<bmp::cpp_dec_float<0>> float_bmp;
v += 6 * ceil(static_cast<float_bmp>((sqrt(static_cast<bmp::cpp_int>(uMax * uMax - candidate)) - v) / 6));
Há um erro de "interconversão genérica"!?!
Eu acho que deveria haver uma maneira mais elegante de realizar uma linha de código tão simples, não é? Deixe-me saber se você tem algumas idéias sobre isso, por favor.
Saudações.