在c中的数字代码库中的计算中发生信号或捕获’nan’
发布时间:2020-12-16 07:04:24 所属栏目:百科 来源:网络整理
导读:我们有用C编写的数字代码.很少但在某些特定输入下,某些计算会产生“纳米”值. 是否有标准或推荐的方法,当某个数值计算导致生成’nan’时,我们可以通过该方法停止并提醒用户? (在调试模式下).如果等于’nan’,检查每个结果似乎是不切实际的,因为矩阵和向量的
我们有用C编写的数字代码.很少但在某些特定输入下,某些计算会产生“纳米”值.
是否有标准或推荐的方法,当某个数值计算导致生成’nan’时,我们可以通过该方法停止并提醒用户? (在调试模式下).如果等于’nan’,检查每个结果似乎是不切实际的,因为矩阵和向量的大小很大. 标准数值库如何处理这种情况?你能否对此有所了解? 解决方法
应用于数字运算时,会传播NaN.因此,检查作为NaN的最终结果就足够了.至于如何做到 – 如果为> = C 11建造,那么就像Goz注意到的那样有std :: isnan.对于< C 11 - 如果想要防弹 - 我会亲自进行比特检查(特别是,如果可能涉及优化). NaN的模式是
? 11.......1 xx.......x sign bit ^ ^exponent^ ^fraction^ 哪里?可以是任何东西,并且至少一个x必须是1. 对于平台相关的解决方案,接缝是另一种可能性. glibc中有函数feenableexcept(可能带有信号函数和编译器选项-fnon-call-exceptions),当发生无效的浮点运算时,它会启动SIGFPE sinals的生成.函数_control87(可能带有_set_se_translator函数和编译器选项/ EHa),它在VC中允许几乎相同. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |