由于
答案 0 :(得分:1)
基于IBM documentation for the differences from IEEE 754 on the SPU,它可以是任意数量的东西:
- 算术运算的零结果总是+0,从不-0。
- 处理从2-149到2-126到算术运算的非正常输入 具有相同符号的零。算术 操作永远不会产生非常规 结果,但产生+0。
- 算术运算不支持IEEE Inf或NaN。这些位模式 代表有效数字。溢出 结果产生最大幅度 适当的标志值。
- 算术运算仅使用舍入到零(chop,truncate) 舍入模式,无论如何 设置舍入模式 浮点状态和控制 注册(FPSCR),仅影响 双精度算术 操作。
当然,在相关网页上you can also compile SPU code for strict IEEE conformance:
默认情况下,XL C / C ++最常用,但是 不是IEEE的所有规则 标准。如果你用。编译 -qnostrict选项,默认情况下在优化级别-O3或 更高,一些IEEE浮点规则 以可以改善的方式违反 性能,但可能会影响程序 正确性。为了避免这个问题,和 编译严格遵守 IEEE标准,请执行以下操作:
- 使用-qfloat = nomaf编译器选项。
- 如果程序在运行时更改舍入模式,请使用-qfloat = rrm 选项。
- 如果数据或程序代码包含信号NaN值(NaNS),请使用 -qfloat = nans选项。 (信号NaN不同于安静的NaN;你 必须明确地将其编码到 程序或数据或使用创建它 -qinitauto编译器选项。)
- 如果使用-O3,-O4或-O5进行编译,请在其后包含选项-qstrict。