2

行列の各エントリに素数を割り当てるプログラムを作成しており、そのうちのいくつかを乗算する必要があります。結果の数値は急速に増加し、long double で「ラップアラウンド」を取得しているため、どのタイプを使用するかについて途方に暮れています:S

すべての助けに感謝します。

-ピッケル

4

6 に答える 6

3

独自の任意精度型を実装する必要がない限り、GMPを使用してください。mpz_t (整数) 型が必要です。十分に文書化されており、参照できるチュートリアルと StackOverflow の質問があります。

于 2010-07-17T15:21:07.370 に答える
0

独自の大きな整数型を実装する必要がある場合があります。チェックアウト:

BigInt

于 2010-07-17T14:56:00.340 に答える
0

それが単なる整数であれば、long long int(少なくとも C/C++ では) あります。double について話している場合は... BigDecimal クラスを使用します。

于 2010-07-17T14:57:23.070 に答える
0

ライブラリの使用を拒否し、独自の大きな型を発明したくない場合は、余分な因数 2 などを追跡してみませんか。

while ( mybignum > BIGNUM_THRESH )
{
    twos++;
    mybignum /= 2; // use >>=1 if you use an integer type (you said you used double so therefore the /=)
}

次に、答えを次のように印刷しますmybignum * 2**twos

2 の 64 ビット int を取ると、最大 2^2^64 まで安全です

于 2010-07-17T16:09:59.030 に答える
0

整数の場合は、BigInteger クラスを使用します (Java または .NET で)

浮動小数点の場合は、BigDecimalを使用します(Java のみ、.net にはまだ任意精度の浮動小数点数がありません)

C/C++ を使用している場合は、独自の型を作成する必要があります

于 2010-07-17T15:18:30.263 に答える
0

CまたはC++の割り当てである型として「long double」を使用していると仮定しますか?

あなたの数字はどれくらいですか?

.NET の long と double の最大値とサイズ

いくつかの関連事項について説明しますが、割り当ての範囲を超えている可能性があります

一般的に言えば、任意精度のライブラリが必要です。

http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic

しかし、割り当てのために、APL を使用する必要があるほど複雑にする必要はない可能性があります。

于 2010-07-17T15:04:40.357 に答える