問題タブ [quadruple-precision]
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++ - C++ の 4 倍精度 (GCC)
つい最近、GCC 4.6.0 がlibquadmathとともにリリースされました。残念ながら、GNU は Fortran をサポートしていますが、C や C++ はサポートしていません (含まれているのは .so だけです)。私はこれらの新機能を C++ で使用する方法を見つけていませんが、GNU C は__float128
保証された 4 倍精度浮動小数点数の型をサポートしています。GNU C は、 libquadmathなど の数学関数をサポートしていないようですfabsq
(絶対値、q
quad の接尾辞)。
これらの関数を C++ で動作させる方法はありますか、または数学関数に使用できる代替ライブラリはあり__float128
ますか? GCC で動作する 4 倍精度浮動小数点数を取得するための最良の方法は何ですか? 現在、それらを加算、減算、および乗算できますが、それらを文字列に変換したり、truncq
およびなどの関数fabsq
を使用して独自の文字列関数を作成したりする方法がないことを考えると、これは役に立ちません。
c++ - quadmathを使用したG++4.6.3Linuxの4倍精度
コードを実行しようとしました
このコマンドで
しかし、私はエラーが発生しました:
バージョンは次のとおりです。
どうすれば問題を解決できますか?
c - scanf の quadmath と引数の型
を使用し<quadmath.h>
ます。入力を正しく読み取ることができる引数の型はどれですか? double を使用すると、次のようになります。
たとえば、「l」の代わりにさまざまな可能性を試しました。
またはなくても
ただし、エラーが発生します。
gcc - long double サブノーマル/デノーマルが 0 に切り捨てられる [-Woverflow]
標準では、IEEE754
厳密に正の (非正規) 値の最小値は、4 倍精度の浮動小数点形式を使用して2 −16493 ≈ 10 −4965です。GCC が 10 -4949未満のものを拒否するのはなぜですか? 制限を 10 -4965ではなく10 -4949に決定する、その下で起こっている可能性のあるさまざまなことの説明を探しています。
オンラインで GNU GCC バージョン 4.8.1を使用しています。どのアーキテクチャで実行されているかわかりません (これが原因である可能性があります)。さまざまなアーキテクチャからの調査結果を自由に投稿してください。
fortran - 平方根を 4 倍精度にする
の平方根を求めるにはどうすればよいReal(Real128)
ですか?
c++ - 最適化フラグ (-O3) が 4 倍精度の計算を高速化しないのはなぜですか?
C++ で記述された高精度 ODE (常微分方程式) ソルバーがあります。私はすべての計算をユーザー定義型で行いますreal_type
。ヘッダーにこの型を宣言する typedef があります。
typedef long double real_type;
__float128
より精度を上げるために、ロングダブルタイプに変更することにしました。これに加えて、quadmath.h
すべての標準数学関数を含め、libquadmath のものに置き換えました。
「long double」バージョンが最適化フラグなしでビルドされた場合、一部の参照 ODE は 77 秒で解決されます。このバージョンが -O3 フラグでビルドされている場合、同じ ODE が 25 秒で解決されます。したがって、-O3 フラグは計算を 3 倍高速化します。
しかし、フラグなしでビルドされた "__float 128" バージョンでは、同様の ODE が 190 秒で解決され、-O3 を使用すると 160 秒で解決されます (~ 15% の差)。-O3 最適化が 4 倍精度の計算に弱い影響を与えるのはなぜですか? 他のコンパイラフラグを使用するか、他のライブラリを含める必要がありますか?
c - __float128 データ型をバイナリ ファイルに書き込むにはどうすればよいですか?
4 倍精度の quadmath ライブラリを使用しています。fwrite 関数を使用してバイナリ ファイルに書き込むことはできますか?