gpt4 book ai didi

c++ - 如何从 boost int256_t 中获取以 2 为底的对数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:42:25 26 4
gpt4 key购买 nike

所以我想从 int256_t 中取对数。

我找到了这个,但修改它以采用 sizeof int256_t 不起作用。它会给出不正确的结果: https://stackoverflow.com/a/11376759

boost有支持多精度的log函数吗?

最佳答案

如果没有进一步的限制,我会写:

Live On Coliru

int256_t x("12345678901234567890");

std::cout << "log2(" << x << ") = " << log2(cpp_bin_float_100(x)) << "\n";

打印

log2(12345678901234567890) = 63.4206

更简单

如果无论如何都要对结果进行四舍五入,则不需要那么精确:

Live On Coliru

std::cout << "log2(" << x << ") = " << log2(x.convert_to<double>()) << "\n";

临时

一个非常粗略的形式可能是这样的:

Live On Coliru

template <typename T>
static inline int adhoc_log2(T i) {
int n = 0;
while(i /= 2) ++n;
return n;
}

打印

adhoc(12345678901234567890) = 63

最后,您确实可以回到位级别并按照@SamVarshavchik 建议的方式应用位操作技巧

关于c++ - 如何从 boost int256_t 中获取以 2 为底的对数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47074521/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com