17

long double浮動小数点計算に型 (80 ビット)を使用する中規模の C99 プログラムがあります。新しい GCC 4.6 拡張機能で精度を向上させたい__float128。私が得たように、これはソフトウェアでエミュレートされた 128 ビット精度の演算です。

完全精度のソフトウェア エミュレーションを使用して、プログラムを従来の 80 ビットの long double から 128 ビットの quad float に変換するにはどうすればよいですか? 何を変更する必要がありますか? コンパイラフラグ、ソース?

私のプログラムでは、 で完全精度の値を読み取り、strtodそれらに対してさまざまな操作 (+-*/ sin、cos、exp など<math.h>) を実行printfし、それらを -ing します。

PS: float128 は Fortran (REAL*16) に対してのみ宣言されていますが、libquadmath は C で記述されており、float128 を使用しています。GCC が float128 の操作をランタイム ライブラリに変換するかどうかはわかりません。また、ソースで long double から __float128 に移行する方法もわかりません。

PPS: 「C」言語の gcc モードに関するドキュメントがあります: http://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html

「GNU C コンパイラは ... 128 ビット (TFmode) 浮動小数点型をサポートしています。追加の型のサポートには、算術演算子が含まれます:加算、減算、乗算、除算、単項算術演算子、関係演算子、等価演算子 ... __float128 型がサポートされていますi386、x86_64"

4

1 に答える 1