快速任意精度c ++库:__float128比MPFR快吗?

时间:2012-10-29 07:10:35

标签: c++ gmp bignum arbitrary-precision mpfr

我知道在类似主题(What's the best (for speed) arbitrary-precision library for C++?The best cross platform (portable) arbitrary precision math library)上有几个主题,我从这些线程中获取的比GMP或基于它的东西,如MPFR是最快的可用库,但我我特别想知道:如果我只想说30分,那么四分之一lib的__float128会更快吗?

MAPM如何与MPFR叠加?

从这个网站看:

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

MPFR表现相当不错,但也有CLN和apfloat?

1 个答案:

答案 0 :(得分:1)

如果你只想要30个小数位,我很确定(没有实际基准测试),GMP或MPFR不能像一些简单的家庭酿酒例程一样快。当然,这取决于你需要的操作。

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

构建自己的C ++函数是一项简单的练习,可以从2位64位无符号函数中获得128位加法/减法。即使乘法也很容易。分部可能不那么简单,但你需要吗?更复杂的功能(根,日志等)是更多的工作,然后GMP等。也许会得到回报。