問題タブ [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++ - MPIでGMPまたはMPFRタイプを送信する方法
mpfr_t
を使用して型の変数を送信しようとしていますMPI_Scatter
。例えば:
それは印刷します:
しかし、それはMPI_Bcastの仕事です。私が間違っていること。コードC/C ++、MPIlibはOpenMPI-1.6です。
c++ - デストラクタの mpfr_free_cache - いいアイデア?
MPFRC++
C++ プログラムで任意の精度が必要なため、多精度浮動小数点 C-libraryではなく、よく知られている軽量の C++ ラッパーを使用していますMPFR
。
私はメモリの問題を抱えています。つまり、amalloc
は MPFR 関数内で失敗します。(興味がある場合は、下部にある小さなエラー メッセージ)。
MPFR マニュアルには次のように書かれています (10 ページ)。
MPFR 関数は、ユーザーが直接 mpfr_const_pi のような関数を呼び出したか、他の関数を計算するためにそのような関数が MPFR ライブラリ自体によって内部的に呼び出されたために、たとえば pi などの定数を計算するときにキャッシュを作成することがあります。
ユーザーはいつでも mpfr_free_cache を使用してさまざまなキャッシュを解放できます。スレッドを終了する前にそれを行うことを強くお勧めします...
私のプログラムは非常にマルチスレッド化されているため、これを使い始める必要があると思いますmpfr_free_cache
。
質問:ラッピング クラスmpfr_free_cache()
のデストラクタ
に単純に配置できますか? これは安全で適切な方法ですか? 問題を解決するのに十分ですか?(メモリリークを正しく特定したと仮定して)
例えば
// mpreal.cpp - ラッパーの実装
私は本業の開発者ではないので、これが本当に問題を解決する最善の方法であるかどうかはわかりません。しかし、すべての OpenMP マルチスレッド領域/for ループに入り込み、mpfr_free_cache()
...
注: スレッドセーフ オプションを使用して MPFR をビルドしました。
興味がある場合は、ここにそのエラーメッセージがあります...
エラー メッセージで参照されているコード:
c++ - gcc 4.7.1 ビルドが未定義の参照で終了する
私は
fortran/arith.o: 関数
gfc_mpfr_to_mpz(__mpz_struct*, __mpfr_struct*, locus*)': arith.c:(.text+0x1169): undefined reference to
内 mpfr_get_z_2exp'
gcc 4.7.1 ビルド プロセスから。私はフォローしています
ただし、少し変更を加えました
download_prequisites
脚本。そして、上記のリンクがgcc 4.6用に提供されているため、元のものが少し古いものをダウンロードしていたgccのすべての前提条件の最新リリースをダウンロードしています。ただし、mpfr ライブラリに関連するいくつかのシンボルが見つかりません。
関連するGoogle検索でこのスレッドが表示されますが、それも役に立ちませんでした。他の誰かが私とは異なる方法で理解できたかもしれません:
この問題を解決する方法に関するヒントはありますか?
c++ - 高速な任意精度の C++ ライブラリ: __float128 は MPFR より高速ですか?
同様のトピックに関するスレッドがいくつかあることを知っています ( C++ に最適な (速度の場合) 任意精度ライブラリは何ですか?および最高のクロスプラットフォーム (ポータブル) 任意精度数学ライブラリ) と私はこれらのスレッドから GMP または何かベースのものよりも取得しますMPFRが利用可能な最速のライブラリのようですが、私は特に疑問に思っています.30 decの場所だけを言いたいのであれば、quadmathライブラリの__float128の方が速いでしょうか?
また、MAPM は MPFR とどのように比較されますか?
このウェブサイトから見えます:
http://pari.math.u-bordeaux.fr/benchs/timings-mpfr.html
そのMPFRはかなりうまくいきますが、CLNとapfloatもありますか?
gcc - gmp、mpc + mpfr: シンボリック リンクではありません
gcc 4.6.1 をビルドして実行ldconfig
すると、次の結果が返されます。
ライブラリを使用してgccを構築する方法は次のとおりです。
gcc を再構築する必要はないと言ってください。このシンボリック リンクの問題は、本当にプログラムに影響を与える可能性がありますか? または、違いはありませんか、たとえば、私がyum install
特定のことをしていたときなど、時々ポップアップします。前もって感謝します。
c++ - 32 ビット Linux と 64 ビット Linux および MPFR の long long int
long long int
64 ビット Linux と比較して、32 ビット Linux システムは正確にどのように処理しますか?
私の 32 ビット システムでは、MPFR データ型にC++ ラッパーを使用しています。このラッパーには、 に対して定義されたコンストラクターがありますが、 でlong int
はありませんlong long int
。それにもかかわらず、32 ビット システムでは、このコードは正常に機能します。
これはどのように可能ですか?32ビットのgccは、データ型にコンストラクターがあるlong long int
と言って、どういうわけかキャストしますか? 上記のコードが 64 ビット Linux で実行されると、コンパイラーは構造があいまいであるというエラーを返します。long int
mpreal
64ビットではまったく使用しないようにと言う人もいますlong long int
が、残念ながら、これがコードに組み込まれている別のライブラリ(odeint)を使用して、指定された多精度データ型をこのように構築しているため、使用しません私は物事を変えることができるとは思わない.
とにかく64ビットlong long int
とまったく同じですか?long int
にキャストするとデータが失われlong int
ますか? たとえば、次のような独自のコンストラクターを作成した場合:
c - mpirおよびmpfrライブラリを使用するためのmakefileを作成する方法
私は最近、パブリックドメインのmpirおよびmpfrライブラリを使用するCプログラムを作成しました。私は、Microsoft Visual C ++ 10.0コンパイラを使用して、Windowsでコンパイルしています。それを機能させるために、私は次のことをしなければなりませんでした:
- http://gladman.plushost.co.uk/oldsite/computing/gmp4win.phpからmpirおよびmpfrライブラリをダウンロード/ビルドします。
- ファイル
mpir.h
をmpfr.h
Microsoftコンパイラのインクルードディレクトリに移動します - ファイル
mpir.lib
、、をMicrosoftコンパイラのlibディレクトリにmpir.pdb
移動しますmpfr.lib
mpfr.pdb
#include
mpir.h
とmpfr.h
プログラムで- を使用してコンパイル
cl <..module names..> /link mpir.lib mpfr.lib
私は今、私が書いたソース/ヘッダーファイルを、コードをコンパイルしてそれが機能することを確認するために使用できるmakefileとともに他の誰かに送信したいと思います。その人はmpir/mpfrライブラリをインストールしておらず、同じコンパイラを使用していない可能性があるため、これを行う方法がよくわかりません。
これが私にできることです:
- それらにバイナリ、、、
mpir.lib
およびソース/ヘッダーファイルmpir.pdb
を送信します。mpfr.lib
mpfr.pdb
これが私ができないことです:
- Microsoft Visual C++10.0のセットアップ全体を送信します
Include
ファイルをディレクトリに貼り付けるように依頼しますlib
(他に方法がない場合を除く)
理想的には、ソース/ヘッダーファイルを、関連するmpir / mpfrバイナリ、およびプログラムをビルドするために実行できるmakefileと一緒に送信できる必要があります。
よろしくお願いします!
c++ - makefileがc++で動作しないzkcm-library-mpfr-functionsが見つかりません
次のオブジェクト行を含む、zkcm-libraryを使用するいくつかのプログラムで使用するためのmakefileがあります。
コンパイラは、「'_ imp_mpfr__inits2'への未定義の参照」があり、mpfr関数を使用するたびに同じであると文句を言います。奇妙なことに、makefileには、mpfr関数を問題なく使用する他のオブジェクトがあります(メインプログラム(最初の行)など)。
どちらの場合も、私は#include<mpfr.h>
ソースにあり、あなたが見るように、を使用してそれにリンクしています-lmpfr
。これがSpMC.cppで機能するが、zkcm_c.cppでは機能しない理由はありますか?
r - gmpおよびマシン制限での大きな整数の使用
.Machine$double.xmax
Rの( )の値より大きい整数を使用できるかどうか疑問に思います~1.79e308
。たとえば、Rのライブラリを使用Rmpfr
するgmp
ことで、システムのRAMの制限まで、任意のサイズの値を割り当てることができると思いました。これはもっと大きいと思いましたが.Machine$double.xmax
、明らかにそうではありません。
64ビットメモリアドレス指定を使用するコンピュータが1.79e308より大きい値を格納できない理由を誰かが説明することは可能ですか?申し訳ありませんが、私はコンピュータサイエンスのバックグラウンドを持っていませんが、学ぼうとしています。
ありがとう。
compilation - MPFR (3.1.0) インストール時のエラー
このリンク(パート 3)の手順に従って MPFR (3.1.0) をインストールしようとすると 、次のエラーが表示されます。
gmp 内部ファイルをチェックしています... configure: エラー: ヘッダー ファイル gmp-impl.h および longlong.h が見つかりません
同じページの手順を使用して既に gmp (5.0.5) をインストールしましたが、gmp のインストールは成功したように見えました。
誰かが問題を理解するのを手伝ってくれますか、または回避策を提案してくれますか?
どんな助けでも大歓迎です!
編集:実行後にエラーが発生します
./configure --with-gmp-build=GMPBUILD # GMPBUILD=/usr/gmp/gmp-5.0.5