我正在开发一个安全关键的嵌入式程序(在 C 中),我想在其中使用 IEEE 754 浮点算法(带有 NaN 和 Infs)进行工程计算。在这里,我有两种方法(afaik)来处理浮点异常:
- 如果发生任何异常,则进入永久故障状态。从错误检测的角度来看,这可能更健壮,但对容错/可用性不利。
忽略异常,并检查最终结果是有限数(成功计算)还是 NaN、inf(计算失败)。此解决方案具有更高的容错性,但风险更大,因为输出可能会意外地从检查中排除。
- 在安全关键系统中哪个是更好的解决方案?
- 还有其他选择吗?
- 如果计算的复杂性不允许第一个解决方案(我无法避免正常使用中的异常),最后的检查是否足够,还是我应该考虑其他方面?