浮点表达式有时可以在处理硬件上收缩,例如使用融合乘法和加法作为单个硬件操作.
显然,使用这些不仅仅是一个实现细节,而是由编程语言规范控制.具体来说,C89标准不允许这样的收缩,而在C99中,只要定义了某些宏,就允许它们.请参阅此SO答案中的详细信息.
但是C++怎么样?浮点收缩是不允许的?某些标准允许吗?普遍允许吗?
c++ floating-point fma
c++ ×1
floating-point ×1
fma ×1