問題タブ [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.

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

gcc - OS X 10.10.2 の「__mpf_struct」に関連する未定義シンボル エラー

からプログラムをコンパイルしようとしています

https://github.com/davidsd/sdpb

OS X 10.10.2 で gcc-4.9、boost 1.57.0、gmp-6.0.0a、および mpfr-3.1.2 を使用していますが、gmp および mpfr パッケージに関連しているように見えるエラーが発生し続けます。10.9.5 でコンパイルに成功した人を知っています。誰でも修正を提案できますか?


アーキテクチャ x86_64 の未定義シンボル: "operator<<(std::basic_ostream >&, __mpf_struct const*)"、次から参照:

"operator>>(std::basic_istream >&, __mpf_struct*)"、次から参照:

ld: アーキテクチャ x86_64 collect2 のシンボルが見つかりません: エラー: ld が 1 の終了ステータスを返しました make: *** [sdpb] エラー 1

0 投票する
5 に答える
672 参照

c - 文字列への任意の浮動小数点数

私はcプログラミング言語が初めてです。私がやろうとしているのは、ストア pi を任意の精度で取得し、それを文字列に変換することです。

これは mpfr lib documentation documentation http://www.mpfr.org/mpfr-current/mpfr.html#Miscellaneous-Functionsです。

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

c++ - boost multiprecision/mpfr float の操作 - 文字列を有効な整数エラーとして解釈できませんでした

非常に大きな数で単純な算術演算を実行するプログラムを作成しました。boost multiprecision ライブラリの mpz_int と mpf_float を使用することに成功しましたが、目的を達成するにはさらに精度が必要であることがわかりました。mpfr ライブラリを使用して、精度の高い float を定義しようとしています。コードをコンパイルすることはできましたが、実行時エラー libc++abi.dylib: terminating with uncaught exception of type boost::exception_detail::clone_impl >: The string “1572…[4000 digits]…00.328” could有効な整数として解釈されません。

作成した mpfr_float を整数に変換しようとしているのが問題の原因であると感じています。整数である文字列から float を初期化し、切り捨てて整数に変換する前に何らかの除算を行います。これが私のtypedefです:

私の宣言:

そして私の試みた変換:

この変換を実行して実行時エラーを回避するために誰かが私を助けてくれたら、とても感謝しています。私の混乱の原因はそれよりも深いところにあるのではないかと思うので、私のプロジェクトについて少し説明したいと思います。そして、私がしていることでもっと根本的に間違っていることがあるかどうか誰か教えていただけないでしょうか。

ランダムに見えるテキストのページを作成しようとしていますが、予測可能な疑似ランダム関数で構成されています。そのため、誰かが 1、次に 2、次に 3 を入力した場合、テキストの 3 ページ間にパターンがないことに気付くでしょうが、これらの数字のいずれかを入力すると、毎回同じテキストが返されます。29 文字のページのすべての可能性を 3200 回、つまり 29^3200 (約 10^4680) の可能性で作成しようとしています。

ホルトン シーケンスを使用して疑似ランダム品質を生成し、結果に 29^3200 を掛けています。

これが私のハルトンシーケンスです:

次に、結果の数値を基数 29 に基数変換して、1 ページのテキストを取得します。最初は mpz_int を 29^3200 (文字列から初期化) に使用しましたが、これは繰り返しパターンを生成することがわかりました。ホルトン シーケンスの分母が何であるかによって異なります。たとえば、分母 243 を生成する入力は、同じ 162 文字が 3200 文字から繰り返されるテキストのページを生成しますが、位置が異なります。

私のプログラムの基本変換セグメントは次のとおりです。

この繰り返しがなぜ起こったのかを理解するのに十分な数学の感覚はありませんが、直感でフロートに変更しました。これははるかに優れていることがわかりました。パターンははるかに短く、出力文字列の先頭 (より高い値を表す) にのみ表示され始めますが、最終的にはまだそこにあり、認識可能でした. mpf_float は mpf_float_1000 よりもうまく機能し、よりランダムに見える結果を生成するという点で、どちらも mpz_int よりもはるかに優れていることがわかりました。

前に述べたように、私の表面的な質問は単純です: この実行時エラーを回避するにはどうすればよいですか? しかし、私のより深い懸念は次のとおりです。a) なぜこれらのパターンが現れるのか? 精度の高い浮動小数点数がこれらの繰り返し文字列を排除するのは正しいですか? b) その場合、mpfr_float は最適なデータ型ですか? どの程度の精度を与えるべきですか?c) そうでない場合、どのデータ型を使用すればよいですか?

これらの質問に答えてくれる人にはとても感謝しています。

- -編集 - -

29^3280 をシードとして使用し、mpf_float に固執し、反復的な文字である最後の 80 文字を切り取るだけで、私が抱えていた問題を解決しました。ただし、固定精度と可変精度についてはまだ興味があります。より高いテンプレート パラメータを使用して固定精度 gmp_float を定義しようとすると、さらに悪い結果が得られました。固定精度と可変精度とは正確には何ですか?また、なぜそのような結果が得られるのでしょうか?

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

ios - iOS SDK 8.3 を使用して MPFR をビルドする際の問題

iOS 用の MPFR、armv7s アーキテクチャの構築に問題があります。GMP のビルドに成功した後、このコマンドを使用しています。

ただし、構成するとエラーが発生します

libgmp が見つからないか、別の ABI を使用しています。

上記と同じ構成設定でGMPをビルドし、make、make installなどを行いました。この後、gmp.hファイルとlibgmp.laファイルをコピーしました

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/usr/include/

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/usr/lib

それぞれですが、同じエラーが発生します。

何か案は?

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

c - MPFR プログラムが高精度でクラッシュする

私は最近、円周率を指定された桁数に計算するプログラムを書きました。桁数は、最初のコマンド ライン引数として渡す必要があります。

約 300 未満の桁の値で実行すると、問題なく動作します。ただし、より大きな桁の値で実行すると、次の例外でクラッシュします。

これは MPFR ライブラリの最大精度によるものだと思いますが、その最大値を変更する方法や回避する方法がわかりません。

ここに私のコードpi.cがあります

次のコマンドで gcc を使用してプログラムをコンパイルします。