讨论开始于myanswertoanotherquestion.以下代码确定machineepsilon:floatcompute_eps(){floateps=1.0f;while(1.0f+eps!=1.0f)eps/=2.0f;returneps;}在评论中建议1.0f+eps!=1.0f测试可能会失败,因为C++标准允许使用额外的精度。尽管我知道浮点运算实际上以更高的精度执行(比实际使用的类型指定的精度更高),但我碰巧不同意这个提议。我怀疑在比较操作期间,例如==或!=,操作数没有被截断到它们类型的精度。换句话说,1.0f+eps当然可以比float(例如,longdouble)
在我的数值模拟中,我有类似于以下片段的代码doublex;do{x=/*somecomputation*/;}while(x对于某些平台(例如linux、x87数学)上的某些编译器(例如gcc),可能会出现x以高于double的方式计算(“超精度”)。(更新:当我在这里谈论精度时,我指的是精度/和/范围。)在这些情况下,可以想象比较(x)返回false,即使下一次x被四舍五入降低到double,它变为0。(并且不能保证x不会在任意时间点向下舍入。)有什么方法可以执行这种比较是可移植的,在内联代码中工作,没有性能影响并且不排除一些任意范围(0,eps)?我尝试使用(x::denorm_m
?作者:韩信子@ShowMeAI?深度学习实战系列:https://www.showmeai.tech/tutorials/42?TensorFlow实战系列:https://www.showmeai.tech/tutorials/43?本文地址:https://www.showmeai.tech/article-detail/332?声明:版权所有,转载请联系平台与作者并注明出处?收藏ShowMeAI查看更多精彩内容对于很多企业而言,电子邮件仍然是主要沟通渠道之一,很多正式的内容也要基于邮件传达,供应商、合作伙伴和公共管理部门也每天会有大量的电子邮件。邮件的信息提取和处理可能是一项耗时且重复
?作者:韩信子@ShowMeAI?深度学习实战系列:https://www.showmeai.tech/tutorials/42?TensorFlow实战系列:https://www.showmeai.tech/tutorials/43?本文地址:https://www.showmeai.tech/article-detail/332?声明:版权所有,转载请联系平台与作者并注明出处?收藏ShowMeAI查看更多精彩内容对于很多企业而言,电子邮件仍然是主要沟通渠道之一,很多正式的内容也要基于邮件传达,供应商、合作伙伴和公共管理部门也每天会有大量的电子邮件。邮件的信息提取和处理可能是一项耗时且重复