- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我和我的博士。学生在物理数据分析环境中遇到了一个问题,我可以对此有所了解。我们有代码分析来自 LHC 实验之一的数据,该实验给出了不可重复的结果。特别是,在同一台机器 上运行的相同二进制文件 的计算结果可能会因连续执行而异。我们知道不可再现性的许多不同来源,但排除了常见的嫌疑人。
当比较两个名义上具有相同值的数字时,我们将问题归结为( double )浮点比较操作的不可再现性。由于分析中的先前步骤,偶尔会发生这种情况。一个例子我们刚刚找到了一个测试数字是否小于 0.3 的例子(注意我们从不测试浮点值之间的相等性)。事实证明,由于检测器的几何形状,计算有时可能会产生恰好为 0.3(或其最接近的 double 表示)的结果。
我们很清楚比较 float 时的陷阱,也很清楚 FPU 中过高的精度可能会影响比较结果。我想回答的问题是“为什么结果无法重现?”是不是因为 FPU 寄存器加载或其他 FPU 指令没有清除多余的位,因此以前计算的“剩余”位影响了结果? (这似乎不太可能)我在另一个论坛上看到一个建议,进程或线程之间的上下文切换也可能导致浮点比较结果发生变化,因为 FPU 的内容存储在堆栈中,因此被截断。对这些=或其他可能的解释的任何评论将不胜感激。
最佳答案
猜测是,您的计算通常是在 FPU 内执行的,精度更高,并且仅在特定点进行舍入(例如,当您将结果分配给一个值时)。
但是,当存在上下文切换时,必须保存和恢复 FPU 的状态——并且至少很有可能这些额外的位不会被保存和恢复上下文切换。当它发生时,这可能不会引起重大变化,但如果(例如)您稍后从每项中减去固定金额并乘以剩余的金额,差额也会成倍增加。
明确一点:我怀疑“遗留”位是罪魁祸首。相反,它会丢失额外的位,导致在计算中略有不同的点进行舍入。
关于c++ - 浮点比较的不可再现性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5008628/
许多书籍都使用下图来说明 Fisher 线性判别分析的思想(该图来自 Pattern Recognition and Machine Learning,第 188 页) 我想知道如何用 R(或任何其他
我想淡入 UITextField 的边框,因此我自己在 UIView 中使用其图层重新创建它: borderView = [[UIView alloc] initWithFrame:CGRec
我希望有人能指出我正确的方向。首先,我不是统计学家。我是一名软件开发人员,我的任务是尝试使用 R 重现 SPSS 因子分析的结果(使用 PC 提取和方差最大旋转)。我在过去一周只接触过 R,所以我试图
我正在尝试使用我用 C 编写的小程序重现 .raw 图像文件,但每次运行该程序时,我的输出文件都变得不可读。 我的程序所做的就是获取每个像素并将其写入相应的输出文件。 另请注意,该程序仅支持灰度图像。
我想在 R 中实现以下 SAS 代码。 $$N_e = N_o{1-exp[\frac{(d+bN_o)(T_h N_e - T)}{(1+c N_o)}]}$$ 其中 $b>0$、$c\geq 0$
我正在尝试重现 dlib 的 frontal_face_detector() 的训练过程。 我正在使用相同的数据集(来自 http://dlib.net/files/data/dlib_face_de
我们在生产环境中遇到过一些异常: UnknownTopicOrPartitionException: This server does not host this topic-partition 根据
我正在尝试在 Matlab 中实现一个颜色条,它在以灰色打印时看起来是线性的。我认为最直接的方法是实现 gnuplot pm3d 30,31,32 RGB 色彩空间。在 this website我找到
我是一名优秀的程序员,十分优秀!