hAc*_*oCk 5 c++ debugging exception-handling nan numerical-methods
我们有用C ++编写的数字代码。很少但在某些特定输入下,某些计算会得出“ nan”值。
是否存在一种标准或推荐的方法,当某些数值计算导致生成“ nan”时,我们可以通过该方法停止并提醒用户?(在调试模式下)鉴于矩阵和向量的尺寸很大,检查每个结果是否等于'nan'似乎不切实际。
标准数值库如何处理这种情况?你能对此有所启发吗?
小智 -1
使用启用 -ffast-math 优化的 g++ 测试 f!=f 可能会出现问题:Checking if a double (or float) is NaN in C++
唯一万无一失的方法是检查位模式。
至于在哪里实施检查,这实际上取决于计算的具体情况以及 Nan 错误的频率,即持续受污染计算与在某些阶段进行检查的性能损失。