C#cannot be coerced into deterministic floating point arithmetic,设计师似乎认为性能开销太大了。
我试图通过仅使用SIMD扩展来评估是否有可能实现确定性浮点运算。 SSE appears to be确定性,within reason。
有什么理由不行吗?
答案 0 :(得分:0)
你的问题的答案是肯定的 - 你需要SSE2,而不仅仅是SSE,才能做到这一点;事实上,Windows和Linux上的x86-64 ABI默认使用SSE2进行浮点运算,这就是.NET 64bit JIT也使用SSE2 FP的原因。
原始SSE的问题(如Pentium III所示)是它只支持单精度,这不足以让你成为一个成熟的浮点环境。尝试在不支持SSE2的处理器上运行使用SSE2的代码应触发非法指令陷阱。