有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java双值反转关闭

以下函数将哪个输入简化为标识(模1 ulp)

public static double invertTwice(double value) {
  double inverse = 1.0 / value;
  return 1.0 / inverse;
}

另外,函数是恒等式(模1 ulp)的最大间隔[min, max]是什么

为什么[1E-320…1E-310]范围内的值在反转时映射到+无穷大?(随后的反转将导致0.0!)

动机:一般关系

a / b == a * (1.0 / b)

不适用于所有双对,即使在b != 0.0时也是如此,例如a = 0.0b = 4.9E-324

例如,在规范化向量时,必须考虑到这一点

[0.0 b 0.0] * (1.0 / b) == [NaN Infinity NaN]

但是

[0.0/b b/b 0.0/b] == [0.0 1.0 0.0]

备注:我的问题不是关于规范化向量,而是关于我上面写的内容。谢谢!


共 (1) 个答案

  1. # 1 楼答案

    通过对分搜索,我找到了在2x反转下不变的双值区间

    value == 1.0 / (1.0 / value)
    

    未来

    [5.562684646268010E-309 ... 1.7976931348623151E308]