JVM任意精度库

时间:2012-04-26 03:03:56

标签: java scala biginteger numeric arbitrary-precision

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

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

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

2 个答案:

答案 0 :(得分:2)

我有点迟了......我只知道apfloat库,提供C ++和Java。 Apfloat-Library:

答案 1 :(得分:1)

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