JVM任意精度库

nom*_*mad 10 java scala numeric biginteger arbitrary-precision

我正在研究一个项目(在Scala中),我需要操作一些非常大的数字; 太大而不能用积分类型来表示.Java提供了BigInteger和BigDecimal类(scala提供了一个很好的瘦包装器).但是,我注意到这些库比我过去使用的其他任意精度库(即http://www.ginac.de/CLN/)慢得多,并且速度差异似乎大于可归因的值仅靠语言.

我对我的程序进行了一些分析,并且44%的执行时间用于BigInteger乘法方法.我想加快我的程序,所以我正在寻找比BigInteger类(及其Scala包装器)更快更有效的选项.我看过LargeInteger(来自JScience)和Aint(来自Afloat).但是,两者似乎都比标准的BigInteger类执行得慢.

有没有人知道Java(或在JVM上可用)任意精度数学库,重点是高性能整数乘法和加法?

Rex*_*err 1

不幸的是,我认为你对 Java 本机库不走运。我还没有找到。我建议使用 JNI 包装 GMP,它具有出色的任意精度性能。存在 JNI 开销,但如果您在 1500 位数字范围内,则与算法复杂性的差异相比,该开销应该很小。您可以找到 Java 版 GMP 的各种包装(我相信最受欢迎的一种就在这里)。