3

I know there are a couple of thread on similar topics ( What's the best (for speed) arbitrary-precision library for C++? and The best cross platform (portable) arbitrary precision math library ) and I take from these threads than GMP or something based on it like MPFR is the fastest lib available, but I am specifically wondering: if I only wanted say 30 dec places would __float128 of the quadmath lib be faster?

Also how does MAPM stack up against MPFR?

It looks from this website:

http://pari.math.u-bordeaux.fr/benchs/timings-mpfr.html

that MPFR does pretty well, but there are also CLN and apfloat?

4

1 回答 1

1

如果您只想要 30 位小数,我很确定(没有实际对其进行基准测试),GMP 或 MPFR 不能像一些简单的自制例程那样快。当然,这在一定程度上取决于您需要的操作。

这背后的原因是 GMP 等人。写得非常好,考虑到了非常大的整数(比如 1,000+ 甚至 1,000,000+ 十进制数字)。但是对于非常小的——但对于 int 来说太大——bignums,一些额外的 if、调用甚至内存分配的开销将在每个基准测试中杀死它们。

这是一个简单的练习,可以构建您自己的 C++ 函数,为您提供 2 个 64 位无符号的 128 位加法/减法。甚至乘法也很容易完成。除法可能没有那么简单,但你需要吗?更复杂的功能(根、日志等)需要更多的工作,然后是 GMP 等。也许会得到回报。

于 2012-11-30T18:38:59.420 回答