【问题标题】:Can the floating point rounding mode be set at compile time in Rust?Rust 编译时可以设置浮点舍入模式吗?
【发布时间】:2016-04-19 16:48:02
【问题描述】:

我想在 Rust 中使用区间算术,为此我需要向上或向下设置舍入模式。据我了解,设置舍入模式会影响性能,所以我想在编译时设置它。

【问题讨论】:

标签: floating-point rust rounding


【解决方案1】:

不可靠,不。问题是LLVM后端不提供任何修改取整模式的支持,虽然最近有some proposals to fix this,但近期不太可能解决。

您可以在程序开始时调用 C fesetround 函数(在 fenv.h 中),但问题是某些优化(例如常量折叠)已经使用默认舍入模式。

【讨论】:

  • 好的。我明白了,也许如果我可以使用一些内联汇编来进行这种优化和更改舍入,我可以获得我想要的行为。
  • 我会调用 fesetround 而不是使用汇编:在 x86 上实际上需要更改 2 个不同的寄存器:用于 SSE 操作的 MXCSR 和用于 x87 操作的 FPSCR。
  • 是的,我必须更改两个寄存器,但现在我面临另一个问题,我在post 中解决了这个问题
猜你喜欢
  • 2021-07-30
  • 2011-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-23
相关资源
最近更新 更多