問題タブ [gmp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
134 参照

c - これは GMP 4.1.2 のバグですか、それとも私のやり方が間違っているのでしょうか?

このコードに文字列を渡すと、文字列が整数であることを意味します"kellogs special k"1私は一体何を間違っているのですか?それともGMPの問題ですか?

ところで、誰かがより新しい GMP の使用を提案する場合は、Windows 用の静的 LIB の Web アドレスを教えてください。ティア。

0 投票する
3 に答える
259 参照

c - C の整数は、ハードウェア仕様またはソフトウェアで処理されると見なされますか?

C の整数は、ハードウェア仕様またはソフトウェアで処理されると見なされますか?

整数によって、プリミティブな「int」を参照しています

C の整数がハードウェアに依存しない場合、gcc に異なる整数ハンドラーを実装させることは標準に違反するという根本的な考えがあります。このようにして、従来の 32 ビット int ハンドラーを持つことができ、さらに 256 ビット整数、あるいは動的サイズの int のハンドラーを持つこともできます。

long と long long については知っていますが、それらが提供されているハードウェアに依存しているかどうかはわかりません。ツールチェーンを構築するときに使用する「int」ハンドラーのサイズ/タイプを指定したいと思います。

これを行うことの危険性も理解しています (32 ビット整数コンパイラで 256 ビット整数をビルドするのは良くないからです!) が、gmp ライブラリのようなものを必要とするコードのビットについては、コードの可読性が大幅に向上すると思います。 . 互換性は同じですが、コード自体ではなくコンパイラに依存します。

クレイジーなアイデアですが、元の質問に戻ります。

C の整数は、ハードウェア仕様またはソフトウェアで処理されると見なされますか?

0 投票する
14 に答える
8183 参照

php - PHP で大きな疑似乱数を生成するにはどうすればよいですか?

次のような PHP で大きな乱数を生成する方法を探しています。

私が見たより近いのはgmp_random () ですが、リムあたりのビット数だけで下限と上限を指定することはできません (これが何であるかはわかりません)。

編集: Axsuuls の回答は、私が望むものにかなり近く、gmp_random に非常に似ているようですが、1 つのシナリオには 1 つの欠陥しかないようです。

次の間の乱数を取得したくないとします。

  • 1225468798745475454898787465154

と:

  • 1225468798745475454898787465200

したがって、関数がBigRandomNumber () と呼ばれる場合:

これは、指定された境界の外にある 9999999999999999999999999999999 を簡単に返すことができます。

長さの値の代わりに最小/最大境界を使用するにはどうすればよいですか?

これは、 1225468798745475454898787465 [154 .. 200]の間の乱数を返す必要があります。

参考までに、解決策はこの質問で提供されている機能を利用する必要があると思います。

編集:上記の投稿は削除されました。ここにあります:

0 投票する
1 に答える
1058 参照

php - bc_math または GMP による根の計算

bc_math を使用してかなり大きな数の根を計算するのに問題があります。例:

これを回避する方法を知っている人はいますか?gmp_pow() も機能しません。

0 投票する
2 に答える
466 参照

gmp - GMPでの式の処理

最近、高精度演算用のGMPライブラリを紹介しました。使い方は簡単そうですが、最初のプログラムでは実際的な問題が発生しています。式はどのように評価されますか。たとえば、「1 + 8 * z ^ 2」があり、zがmpz_tの「大きな整数」変数である場合、これをすばやく評価するにはどうすればよいですか。(私が書いているプログラムには、より大きな式があります。)現在、私はすべての操作を手動で実行し、「1 + 8 * z^2」式の結果を次のような一時変数に格納しています。

1)最初にmpt_mul(z、z、z)を2乗zに実行します

2)次に、値8で「eight」と呼ばれるmpz_t変数を定義します。

3)ステップ1の結果にこの8を掛けて、一時変数に格納します。

4)値1で「one」と呼ばれるmpz_t変数を定義します。

5)これをステップ3の結果に追加して、最終的な答えを見つけます。

これは私がしていることになっていることですか?それとももっと良い方法はありますか?GMPのユーザーズマニュアルがあれば本当に役に立ちますが、リファレンスマニュアルしかありません。

0 投票する
3 に答える
1548 参照

c++ - 小整数を効率的に加算するBignumの実装

私はアルゴリズムにPythonのネイティブbignumを使用しており、C++に変換して高速化することにしました。ロングロングを使用した場合、C ++はPythonよりも約100倍高速でしたが、C ++でGMPバインディングを使用した場合、Pythonよりもわずか10倍高速でした(ロングロングに適合する同じケースの場合)。

多数の小さな追加を行うためのより良いbignum実装はありますか?たとえば、大きな数Nがあり、小さな+ 1、+ 21、+ 1などをたくさん追加し、ときどき別の大きな数Mを追加しますか?

0 投票する
2 に答える
1986 参照

c - mpz_t の配列へのポインターでの double free エラー

私は現在libgmpを学んでおり、そのために素因数を見つける小さなプログラムを書いています。私のプログラムは、さまざまな量の mpz_t 整数 (特定の数値の素因数) で配列を埋める関数を呼び出します。これを返す必要があります。最後の要素を NULL に設定することを計画しているので、関数が検出した mpz_t 整数の数を知っています。

私の問題は、mpz_t 整数へのポインターの配列でダブル フリー エラーが発生することです。私の問題を説明するサンプルコードをいくつか書きました:

2 と 5 は stdout に出力されるので、割り当ては問題ないようです。しかし、私は以下のダブルフリーエラーを取得しています:

私はまだポインターに完全に慣れており、gccはエラーを出しませんが、これは間違っていると確信しており、次のようなことをする必要があります

それ以外の:

しかし、それは私にコンパイラエラーを与えます

とにかく、私の質問は次のとおりです。

  1. mpz_init_set_ui() 呼び出しでポインターを逆参照する必要があると確信していますが、なぜそれが間違っているのですか?
  2. これを行うより良い方法はありますか?連結リストを使用する必要がありますか?(連結リストはまだ学習していません。これには配列が最適だと思いますが、本当に難しい場合は教えてください) 3. 構造体を作成した方がよいでしょうか配列へのポインターと、配列内の要素の量を含む別の変数を使用して、代わりにそれへのポインターを返しますか?

プラットフォームは、関連する場合に備えて Linux 32 ビットです。

これが私が今持っているコードです。これを変更したいのですが、スタックで mpz_t の配列を宣言します。しかし、 main() を関数にしたい:

よろしくお願いします。

0 投票する
4 に答える
5450 参照

python - Gmpy のドキュメントはどこにありますか?

gmpy-1.11rc1.win32-py2.6.exe をインストールしましたが、使い方がわかりません。mpz、mpq、mpf などのエクスポートされた関数がいくつか表示されますが、次のような関数を呼び出すにはどうすればよいですかGNU MP C ライブラリの mpz_probab_prime_p()?

Google Codeで gmpy を見ましたが、まだわかりません。gmpy のドキュメントもどこにも見つかりませんでした。ありがとう。

0 投票する
1 に答える
1244 参照

shared-libraries - CentOs5.3でのgmp5の使用

CentOSバージョン5.3x86_64、IntelX5550プロセッサを使用しています。このシステムでgmp5.0.0をコンパイルしました。実行しようとすると、エラーが発生します:-

64ビットISAを使用する64ビットシステムで作業しているため、理解できません。

どんな助けでも大歓迎です。

ありがとう

0 投票する
3 に答える
34537 参照

c - Xcode でリンカー フラグを追加する

(「フラグ」が探している単語かどうかはわかりませんが、説明します。)

GMPビッグ ナンバー ライブラリを使用するプログラムをコンパイルしようとしています。しかし、GMP でコンパイルできるようにするに-lgmpは、コマンドの最後に追加する必要があります。たとえば、「program.c」をコンパイルしたい場合は、次のように入力する必要がありますgcc program.c -lgmp。これはコマンド ラインからは簡単ですが、Xcode で行う方法がわかりません。lgmpXcode の使用中にフラグを追加するにはどうすればよいですか?