我知道有两个主题相似的线程(What's the best (for speed) arbitrary-precision library for C++?和The best cross platform (portable) arbitrary precision math library),我从这些线程中获取的信息比GMP或基于MPFR的东西(例如MPFR)是最快的lib,但是我特别想知道:是否只想说12月30日地方lib的__float128会更快吗?
MAPM又如何与MPFR相提并论?
从这个网站上看:
http://pari.math.u-bordeaux.fr/benchs/timings-mpfr.html
MPFR表现还不错,但是还有CLN和apfloat吗?
最佳答案
如果您只想要小数点后30位,我敢肯定(实际上没有对其进行基准测试),GMP或MPFR不能像某些简单的自制程序那样快。当然,这取决于您所需的操作。
其背后的原因是GMP等。确实写得很好,并考虑到很大的整数(例如1,000+甚至1,000,000+十进制数字)。但是对于非常小(但对于int而言却太大)的bignum,在每个基准测试中,一些额外的if,调用甚至内存分配的开销都会杀死它们。
构建您自己的C++函数很容易,它可以为您提供2 64位无符号的128位加/减。甚至乘法也很容易完成。划分可能不是那么简单,但是您需要吗?更复杂的功能(根,日志等)需要更多工作,然后是GMP等。也许会还清。
关于c++ - 快速的任意精度c++库:__float128是否比MPFR快?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13117300/