【初心者歓迎】C/C++室 Ver.71【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0779デフォルトの名無しさん
2010/02/24(水) 17:35:19よろしくお願いします。
float a = 0.54351f;
float b = 0.21356f;
a *= b;
というC++のプログラムがあったとします。(aとbは実際にはローカル変数ではなく、最適化により式が消えることはないとしてください)
この時、aの結果が「PC環境によって異なる」かどうかが知りたいのです。
DirectXにあるD3DXというライブラリでは、内部でSSEやらSSE2やら3DNow!やら、色々
「そのPC環境で、もっとも浮動小数点計算が高速な手段を探し、それを使う」
という挙動をします。
もともと描画ライブラリなので、この挙動自体素晴らしいものだとは思います。
ただ、互換性が重要な場合に困ってしまうのです。
そこで自前の浮動小数点計算ライブラリを作るべきという話になったのですが、最初にあげたように
普通にfloatを使っているだけなら互換性が保証されるのか?という点においてまったく自信がありません。
少し調べたところ「互換性重視ならx87FPUを使うべき」という意見も見かけました。
ただ「x87FPUと使え」と指定する方法も分かりません。
「x86用コンパイラは、通常小数点計算をx87FPUにやらせるようにコンパイルする」とあるのですが、実際のところどうなのでしょうか?
http://msdn.microsoft.com/ja-jp/library/e7s85ffb%28VS.80%29.aspx
コンパイラオプションでSSEを有効にする、しないのようなオプションもあるにはあるのですが…。
分からないことだらけな上、長文ですが、ご意見よろしくお願いいたします。
■ このスレッドは過去ログ倉庫に格納されています