問題タブ [mpfr]
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.
c - Haskell FFI /CMPFRライブラリラッパーの問題
Doubleの代わりに任意精度の浮動小数点/ドロップを作成するために、FFIを使用してMPFRをラップしようとしていますが、すべての努力にもかかわらず、最も単純なコードは機能しません。コンパイルして実行しますが、しばらく動作するふりをした後、嘲笑してクラッシュします。単純なCバージョンのコードは、数値「1」から(小数点以下640桁)までの合計10,000回をうまく出力します。Haskellバージョンは、同じことをするように求められた場合、「1.0000 ... 0000」の289回の印刷後、および385回の印刷後、アサーションの失敗と爆弾を引き起こし、データをサイレントに破損(?)します。「動作するはず」なので、これをデバッグする方法がわかりません。
コードはhttp://hpaste.org/10923で閲覧でき、 http: //www.updike.org/mpfr-broken.tar.gzでダウンロードできます。
FreeBSD6ではGHC6.83を、Mac OSXではGHC6.8.2を使用しています。ライブラリとヘッダーファイルの正しいパス(Makefileを変更)とともにMPFR(2.3.2でテスト済み)をインストールする必要があることに注意してください。 GMPから)これを正常にコンパイルします。
質問
なぜCバージョンは機能するのに、Haskellバージョンはフレークアウトするのですか?FFIに近づくときに他に何が欠けていますか?StablePtrsを試しましたが、まったく同じ結果になりました。
他の誰かが私のコードをコンパイルして実行することにより、これがMac / BSDのみの問題であるかどうかを確認できますか?(Cコードは「機能」しますか?Haskellコードは「noworks」は機能しますか?)LinuxとWindowsの誰かがコンパイル/実行して、同じ結果が得られるかどうかを確認できますか?
Cコード:(works.c)
Haskellコード:(Main.hs---動作しません)
c++ - Visual Studio で GMP ライブラリを構築していますか?
Visual Studio 2005 を使用して Windows でGMP (GNU Multiple Precision Arithmetic Library、http://gmplib.org ) を構築する簡単な方法はありますか? 自分でライブラリを構築するための情報を見つけようとしましたが、本当に役立つものは見つかりませんでした。私は自分でライブラリを構築する経験があまりありません (boost を構築することはできましたが、それだけです)。
それとも、私が知らない安定した (ビルド済みの) GMP ディストリビューションはありますか?
MPIR は有効な代替手段 ( http://www.mpir.org ) ですか? GMP サイトの MPIR に関するコメント: この「怒りの GMP フォーク」は、一部の Windows ユーザーにとっては実際の GMP の代わりになるかもしれませんが、多くの反 GMP 感情に対処する必要があります。
編集: MPFR C++ ラッパー ページには、Visual Studio およびコンパイルされた gmp/mpfr ライブラリ用の GMP/MPFR ソリューションへの情報/リンクも含まれています: http://www.holoborodko.com/pavel/mpfr/
c++ - プラットフォームに依存しない数学ライブラリ
sin、cos、floor、ceil、exp、および32ビットと64ビットのLinux、solaris、および場合によっては他のプラットフォームでのログオンに対してまったく同じ結果を生成する、公開されているライブラリはありますか?
私は次の代替案を検討しています。a
)各プラットフォームで同じ最適化レベルでコンパイルされたcephesgcc -mfpmath=sse
...しかし、これが機能するかどうかは明らかではありません。
b)MPFRですが、これが遅すぎるのではないかと心配しています。
精度について(編集済み):この特定のアプリケーションでは、正確な値に数値的に最も近い値を生成するものは実際には必要ありません。答えは、すべてのプラットフォーム、OS、および「ビットネス」でまったく同じである必要があります。そうは言っても、値は妥当である必要があります(5桁で十分でしょう)。最初の質問でこれを明確にしなかったことをお詫びします。
十分に低い精度設定のMAPMまたはMPFRでうまくいくかもしれませんが、「複数の精度」の機械/フレーバーがないものを見つけたいと思っていました。とにかく、これを試してみます。
math - MPFR丸めの問題
私はMPFR任意精度ライブラリを使い始めたばかりで、すぐに非常に奇妙な動作に遭遇します。これを使用する主な目的は、大きな引数の「トリガー」の精度を向上させることであり、これはMPFRで非常にうまく機能します。
しかし、それから私は簡単な数学をチェックすることにしました、そしてそれは信じられませんでした-厳密な答えを持つ単純な例でさえ、丸め誤差が存在し、使用される精度に依存しません。
1.1 * 1のような例でも、結果は1.10000000000000008881784 ...そしてこの結果は非常識な2000ビット精度(通常のdoubleでは53)で与えられます!
たぶんそれは私のシステムの問題ですが、オンラインMPFRでも同様の問題が存在します。このような例をオンラインで試すことができます:http://ex-cs.sist.ac.jp/~tkouya/try_mpfr.html
1 * 1.1@64ビット=1.10000000000000000002
しかし、オンラインバージョンは精度の向上とともにエラーをさらに進めますが、私のインストールでは-いいえ。
私のシステム:Ubuntu 9.10 + gmp 5.0.0.1 + mpfr 2.4.2
c - MPFR 丸め 0.9999 を 1 に?
mpfr_set_str() 関数を使用して、値 0.9999 を mpfr_t 変数に格納しようとしています。
ただし、丸め値 (GMP_RNDD、GMP_RNDU、GMP_RNDN、GMP_RNDZ) に関係なく、0.9999 は保存中に 1 (または他の値 != 0.9999) に丸められます。
mpfr_set_str() を使用して mpfr_t 変数に 0.9999 を格納する最良の方法は何でしょうか? 出来ますか?
これが私のテストプログラムです。必要な「buffer is: 0.9999」ではなく、「buffer is: 1」と出力されます。
助けてくれてありがとう
configuration - GCC は GMP、MPFR、および MPC ライブラリを見つけることができません
Mac OS 10.5.7 で GCC をクロスコンパイルしようとしています。GMP、MPFR、および MPC をインストールした後、次のコマンドを使用して GCC を構成しました。
このエラーが発生しました:
GCC が GMP、MPFR、および MPC のヘッダーを検出できたのに、ライブラリを検出できなかったのはなぜですか?
c++ - mpfr_t(またはその他の任意精度ライブラリタイプ)を__float128に変換する
本当に2つの質問があると思います。
1)GCCでmpfr_t型を__float128型に変換する方法を誰かが知っているかどうか疑問に思いました。私は周りを見回して、mpfrバグ修正サイトで誰かが__float128からmpfr_tへのコンバーターを作成する試みについて議論しているスレッドを見つけましたが、それは昨年のいつか落ちたようです。
2)mpfr_tを__float128に変換する方法を誰も知らない場合、誰かができる別の任意精度のC / C ++ライブラリを知っていますか?
ありがとう
c - mpfr_t の型と、この型の C 関数を作成するにはどうすればよいですか?
GMP と MPFR を使い始めたばかりです。私は C でプログラムを書いており、(たとえば) 入力として mpfr_t 変数を取り、mpfr_t 変数を返す関数を作成したいと考えています。mpfr_t の定義はよくわかりませんが、単純にこれを実行してコンパイル エラーが発生しました。
これに関する情報は大歓迎です。
gcc - MPFR を取得して cygwin 上に構築する
に従ってGCCをセットアップするのに一日を費やしました
http://cygwin.wikia.com/wiki/How_to_install_GCC_4.3.0
gcc の make ステップで、なんらかの理由で続行するには C++ コンパイラが必要だと言われたので、通常の方法で Cygwin を更新し、gcc-c++ を入手しました。
その後、cgywin は以前にインストールした 3 つの prereq ライブラリを削除してくれました。
それで私はそれらを作り直すことにしました。GMP は正常に機能し、MPFR に到達しました。何らかの理由で MPFR がこのエラーをスローしています:
リソースは、このエラーについてここで言及しています。
cygcheck は問題なく GMP を見つけていると確信しており、config にも GMP が見つかったと記載されています。
私がしようとすると:
それはスローします:
これまでのところ、グーグルで何時間も試してみましたが、MPFR を機能させることができませんでした。
MPC も通常の方法で GMP を見つけることができません。
また、サブディレクトリでライブラリをGCCに渡してコンパイルさせてみました。
私がそれを試みると、makeステップに到達し、stage1-bubble
エラーをスローして失敗します。エラーの説明などはありません。
他に何を試すべきかわかりません。
gcc - 古いバージョンのgccをコンパイルします
CentOS 5.5OSでgccバージョン4.1.2200080704(Red Hat 4.1.2-50)を使用してgccバージョンgcc4.3.2をコンパイルしようとしています。当初、コンパイラはgmpおよびmpfrライブラリが必要であると不満を漏らし、それらはダウンロード、コンパイル、およびインストールに成功しました。
インストール後、使用された新しいconfigureコマンドは次のとおりです。
../gcc4.3.2/gcc-4.3.2/configure --prefix = / home / shahw / gccdir / --with-gmp = / usr / local / --with-mpfr = / usr / local /
次のエラーが発生しました。
config.logには、最後に次のものが含まれています。
潜在的な解決策に向けたヒントをいただければ幸いです。