私はRustで区間演算を行いたいので、丸めモードを上または下に設定する必要があります。いくつかの検索からわかるように、丸めモードを設定するとパフォーマンスに影響するため、コンパイル時に設定したいと思うでしょう。コンパイル時にRustで浮動小数点丸めモードを設定できますか?
答えて
信頼性の高い、問題はLLVMバックエンドが丸めモードの変更をサポートしていないことです。最近はsome proposals to fix thisがありますが、近い将来解決される可能性は低いです。
プログラム開始時にC fesetround
関数(fenv.h
)を呼び出すことができますが、既定の丸めモードを使用して一定の最適化(定数の折り畳みなど)が行われていることが問題です。
ok。私はおそらく、もし私がそのような最適化を可能にし、あるインラインアセンブリを使って丸めを変えることができれば、私が望むバーハイを得ることができます。 –
私はアセンブリを使うのではなく 'fesetround'を呼び出します。x86では、SSE操作のMXCSRとx87操作のFPSCRの2つの異なるレジスタが実際に存在します。 –
はい、私は2つのレジスタを変更する必要がありますが、今私はこの[投稿]で扱う別の問題に直面しています(http://stackoverflow.com/questions/36789681/which-llvm-passes-are-responsible-for浮遊点最適化) –
- 1. 浮動小数点丸め
- 2. 条件付きで浮動小数点を丸めます
- 3. 浮動小数点/小数点から小数点以下3桁までを正確に丸めますか?
- 4. なぜ浮動小数点数を丸めるのですか?
- 5. C++で異なるIEEE浮動小数点丸めモードを使用する
- 6. 大きな浮動小数点を整数に丸める
- 7. opencvでC++で浮動小数点数を丸める方法
- 8. 丸ごと浮動小数点で$ .01
- 9. 解像度を設定する浮動小数点数を丸める
- 10. Pandas Shiftは浮動小数点数を浮動小数点に変換して丸めます
- 11. 浮動小数点数をN小数点以下に丸める方法[JAVA]
- 12. 浮動小数点数を2小数点以下に丸める
- 13. F#で浮動小数点を丸める方法は?
- 14. 浮動小数点数は浮動小数点数ですか?
- 15. ハスケル - 浮動小数点を次の整数に丸める
- 16. 浮動小数点数を最も近い整数に丸めますか?
- 17. C++:コンパイル時に浮動小数点数をアサートする
- 18. Cの浮動小数点数を丸める#
- 19. MIPSの丸め浮動小数点数をプリントアウト
- 20. MIPS(アセンブリ) - 浮動小数点数を丸める方法?
- 21. 浮動小数点の丸めを使用する理由は?
- 22. Rubyにおける浮動小数点丸めの変化2.4
- 23. IEEE-754浮動小数点数の丸め機構
- 24. IE互換モードの浮動小数点
- 25. アンドロイドで浮動小数点数を1桁に丸める方法は?
- 26. perlで浮動小数点数が丸められるのを防ぐには?
- 27. 浮動小数点の減算でも丸めを行います
- 28. iPhone用コンパイルの最適化:浮動小数点または固定小数点?
- 29. IEEE754浮動小数点の最も一般的な丸めアルゴリズム
- 30. numpyの浮動小数点丸め誤差
あなたが知っていれば、私たちとあなたの知識を共有してください。 –
http://www.gnu.org/software/libc/manual/html_node/Rounding.htmlが役立ちます。 gccのCおよびC++の実装にはおそらく適用されます。 RustやClangがC/C++をどのように実装しているかについての手掛かりはありません。最後のコメントと「最も近いものへの丸め」のコメントに注意してください。 – thurizas
関連:http://stackoverflow.com/questions/28121957/how-do-i-specify-the-rounding-mode-for-floating-point-numbers – Veedrac