GCC 4.5では、ランタイムライブラリ(http://gcc.gnu.org/gcc-4.5/changes.html)の10進浮動小数点サポートが追加されました。私は、namespace std :: decimalを使い、コード内でdecimal64などを使ってコードをコンパイルすることができます。Gnu C++での10進浮動小数点の使い方(g ++)?
残念ながら、コードをリンクするライブラリがありません。私はどのライブラリが必要であるかを知ることができませんでした。 gcc(--enable-decimal-float = dpd)でDFPサポートが有効になっています
また、コードに小数点以下のリテラルを提供するいくつかの方法がありますか?高速では、テンプレートで処理され、コンパイル時に翻訳されるユーザー定義のリテラルを意味します。私は実行時に変換されるdouble型を提供したくありません(パフォーマンスと実際にはコンパイル時から実行時の評価を動かすことはできませんが、まだ丸めの問題があります...)。私はすでに接尾辞 "df"を見つけましたが、それはコンパイラによって認識されないようです。
ターゲットpowerpc-ibm-aix7.1.0.0でgccバージョン4.7.1を使用しています。
リンカのエラーメッセージ:
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatsisd
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatsidd
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatsitd
ld: 0711-317 ERROR: Undefined symbol: .__dpd_mulsd3
ld: 0711-317 ERROR: Undefined symbol: .__dpd_muldd3
ld: 0711-317 ERROR: Undefined symbol: .__dpd_multd3
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatdisd
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatunsdisd
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatdidd
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatunsdidd
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatditd
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatunsditd
TIA。
'_Decimal64'のリテラルサフィックスは' dd'( 'df'は' _Decimal32')ですが、コンパイラが後者(DPDルーチンはもちろん)を認識しないことは説明していません。 '--enable-version-specific-runtime-libs'をコンパイラに渡してみましたか? –
コンパイラにそのオプションを渡すことは本当ですか?それは認識されません。 "g ++ -v"はコンパイラ自体が上記のオプションで構成されていることを示しています。 – user1034081