9

私はいくつかの非常に大きな数を操作する必要があるプロジェクト( Scala 内)に取り組んでいます。整数型で表すには大きすぎます。Java は BigInteger クラスと BigDecimal クラスを提供します (そして、scala はそれらを包む素敵な薄いラッパーを提供します)。ただし、これらのライブラリは、私が過去に使用した他の任意精度ライブラリ (つまりhttp://www.ginac.de/CLN/ ) よりも大幅に遅く、速度の差は考えられるよりも大きいようです。言語だけに。

プログラムのプロファイリングを行ったところ、実行時間の 44% が BigInteger 乗算メソッドに費やされました。プログラムを少し高速化したいので、BigInteger クラス (およびその Scala ラッパー) よりも高速で効率的なオプションを探しています。LargeInteger (JScience から) と Aint (Afloat から) を見てきました。ただし、どちらも標準の BigInteger クラスよりもパフォーマンスが遅いようです。

高性能の整数の乗算と加算に焦点を当てた Java (または JVM で利用可能な) 任意精度の数学ライブラリを知っている人はいますか?

4

2 に答える 2

2

私は少し遅れています...まあ、C++とJavaの両方で利用できるapfloatライブラリしか知りません。 Apfloat-ライブラリ:

于 2013-03-09T12:31:29.603 に答える
1

残念ながら、あなたは Java ネイティブ ライブラリには不向きだと思います。見つけたことがありません。任意精度性能に優れた GMP を JNI でラッピングすることをお勧めします。JNI のオーバーヘッドはありますが、1500 桁の範囲であれば、アルゴリズムの複雑さの違いに比べれば小さいはずです。Java 用の GMP のさまざまなラッピングを見つけることができます (最も人気のあるものはここにあると思います)。

于 2012-04-26T15:10:19.173 に答える