我知道在类似主题(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?
答案 0 :(得分:1)
如果你只想要30个小数位,我很确定(没有实际基准测试),GMP或MPFR不能像一些简单的家庭酿酒例程一样快。当然,这取决于你需要的操作。
背后的原因是GMP等。我写得非常精确,考虑到非常大的整数(例如1,000+甚至1,000,000+十进制数字)。但是对于非常小的 - 但对于int-bignums来说太大了,一些额外的if,调用甚至内存分配的开销会在每个基准测试中杀死它们。
构建自己的C ++函数是一项简单的练习,可以从2位64位无符号函数中获得128位加法/减法。即使乘法也很容易。分部可能不那么简单,但你需要吗?更复杂的功能(根,日志等)是更多的工作,然后GMP等。也许会得到回报。