浮動小数点計算にはlong double
タイプ(80ビット)を使用する中規模のC99プログラムがあります。新しいGCC 4.6の拡張子__float128
で精度を向上させたい。私が得たように、これはソフトウェアエミュレートされた128ビット精度の計算です。Gccの使用方法4.6.0 x86とx86_64でlibquadmathと__float128を使用する
プログラムを80ビットの古典的なロング・ダブルから128ビットのクワッド・フロートに変換するにはどうすればよいですか? 私は何が変わる必要がありますか?コンパイラフラグ、ソース?
私のプログラムの精度は、strtod
で、+ - */sin、cos、expなどの多くの操作を<math.h>
から、printf
から実行しています。
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)、フローティングタイプが追加タイプのサポートは、算術演算子が含まれています。 、加算、減算、乗算、を分割し、単項算術演算子、関係演算子、私はclassiから私のプログラムを変換する必要がありますどのように等価演算子は... __float128タイプはi386でサポートされている、x86_64" 版の
libquadmathはhttp://gcc.gnu.org/onlinedocs/libquadmath/index.html#toc_Topです。これはhttp://gcc.gnu.org/gccに関するニュースです-4.6/changes.html "__float128は、32ビットx86、x86-64およびItaniumアーキテクチャ上のターゲットで利用可能です。__float128は、__float128データ型のターゲットに対して4倍精度の数学関数を提供するLGPLライセンスlibquadmathライブラリとともに提供されます。 " – osgx
その基本的な操作は' glibc/soft-fp'によって行われます。例えば '__subtf3()' http://koala.cs.pub.ro/lxr/#glibc+2.9/soft-fp/subtf3.c# L35 http://gcc.gnu.org/wiki/Software_floating_point – osgx
libquadmathを使用して、[strtoflt128](http://webcache.googleusercontent.com/search?q=cache:P0PwG_dRv4EJ:gcc.gnu.org/onlinedocs)を使用することができます。 /libquadmath.ps.gz+&cd=1&hl=en&ct=clnk&client=ubuntu)を 'strtod' replacemとして追加しますent。 –