_controlfp( _CW_DEFAULT, 0xffffffff ); を移植しようとしています。WIN32からMac OS X / Intelまで。この命令を移植する方法がまったくわかりません...そしてあなたは?ありがとう!
2 に答える
GoughのGCC入門のセクション8.6を試してください。これは、x86FLDCW命令を示しています。ただし、なぜ必要なのかを教えていただければ助かります。doubleをIEEE-754 64ビットdoubleにする場合、最も簡単な方法は-msse -mfpmath=sseでコンパイルすることです。
どのような精密要素を制御していますか?
Microsoftのウェブサイトによると:
この
_control87
関数は、浮動小数点制御ワードを取得および設定します。浮動小数点制御ワードを使用すると、プログラムは浮動小数点演算パッケージの精度、丸め、および無限大のモードを変更できます。を使用して、浮動小数点例外をマスクまたはマスク解除することもできます_control87
。maskの値が0に等しい場合_control87
、浮動小数点制御ワードを取得します。maskがゼロ以外の場合、制御ワードの新しい値が設定されます。マスクでオン(1に等しい)のビットの場合、newの対応するビットが制御ワードの更新に使用されます。つまり、fpcntrl = ((fpcntrl & ~mask) | (new & mask))
fpcntrlは浮動小数点制御ワードです。
キーワード「ライブラリ」に注意してください。この関数は、Macには存在しない可能性のあるMicrosoftライブラリを操作しています。
私は次のことを提案します:
- Macの浮動小数点チップを自分で制御する
- または、Mac用のMicrosoftコンパイラを使用します
- または、浮動小数点コントロールをプログラム内のより一般的な場所に移動する方法を見つけます。
私ができる最善のアドバイスは、標準およびプラットフォームまたはライブラリ固有の問題にできるだけ多くのコードをインラインに保つことです。プラットフォーム固有の機能を含むこれらの機能については、それらを独自のソースファイル/翻訳ユニットに移動します。プラットフォームごとに1つずつ、これらの関数のコピーを作成します。リンカに使用するものを決定させます。
幸運を。