gpt4 book ai didi

testing - 最低精度的 ULP 单位

转载 作者:行者123 更新时间:2023-11-28 20:22:22 31 4
gpt4 key购买 nike

谁能解释一下最低精度的 ULP 单位?我有如下定义,但还是不清楚

“表示分数时的误差大小与存储的数字大小成正比。ULP 或最小精度单位定义了存储数字时可以获得的最大误差。存储的数字越大,ULP 越大”

具体是什么意思?提前致谢

最佳答案

在浮点格式中,数字用符号 s、有效数(也称为分数)f 和指数 e 表示em>。例如,对于二进制 float ,由 sfe 表示的值是 (-1) sf•2e

f 被限制为一定数量的数字,并且在二进制中,通常要求至少为一位且小于两位。可以对数字进行的最小更改(下面讨论的某些异常(exception)情况)是将 f 的最后一位修改为 1。例如,如果 f 被限制为六位二进制数,那么它的值从 1.00000 到 1.11111,它可以做的最小变化是 0.00001。给定指数 ef 变化 0.00001 会修改 0.00001•2e 表示的值。这是最小精度单位 (ULP)

请注意,ULP 因指数而异。

我提到的异常发生在最大的可表示有限值(其中数字只能通过产生无穷大来增加),最小(最负)的可表示有限值,零和次正规数(特殊情况发生在分数和指数),以及指数变化的边界。在这些边界处,您正在减小指数,这意味着 f 的最低有效数字的值减小,因此步长实际上是旧 ULP 的 ½。

当单个操作仅受浮点系统在其有限范围内(而不是超出该范围)可以表示的数字的限制时,结果中的最大误差为 ULP 的 ½。这是因为,如果您距离精确的数学结果超过 ½ 个 ULP,您可以将计算结果更改 1 个 ULP,以便其误差幅度减小。 (例如,如果精确结果为 3.75,则从 3 更改为 4 会将误差从 .75 更改为 .25。)

基本算术运算,例如加法、乘法和除法,应提供四舍五入到最接近的可表示结果的结果,因此它们的误差最多为 ½ ULP。平方根也应该以这种方式实现。数学库函数(如余弦和对数)的目标是提供良好的舍入,但很难获得正确的舍入,因此商业库通常不保证正确的舍入。

从十进制(例如 ASCII 文本)到内部浮点格式的转换应该正确舍入,但并非所有软件库或语言实现都能正确执行此操作。

复合运算(例如为获得结果执行多次计算的子例程)将存在许多舍入误差,并且通常不会返回与数学上精确结果相差 ½ 个 ULP 以内的结果。

请注意,表示分数时误差的大小与存储的数字的大小成正比,这在技术上是不正确的。误差的界限大致成正比——我们可以说 ½ ULP 是误差的界限,而一个 ULP 大致与数量成正比。它只是大致成正比,因为它的变化系数为两倍(当使用二进制时),因为分数范围从一到二。例如,1 和 1.9375 具有相同的 ULP,因为它们使用相同的指数,但 ULP 中 1 的比例大于 1.9375。

而且只有误差范围大致成正比。实际错误取决于所涉及的数字。例如,如果我们将 1 和 1 相加,我们将得到 2 且没有错误。

关于testing - 最低精度的 ULP 单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43965347/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com