这是一个非常简单的问题,但需要专家回答。
我们知道,在浮点低于正常,我们摆脱掉的差距2^emin和0。
通过半圆整(RTE)模式,我们应将无限精度结果四舍五入为(0.1111...1|r)*2^emin或(1.1111...1|r')*2^(emin-1)?该点左侧的数字是隐式位。
对于第一种情况:
在论文中,每个计算机科学家都应该了解浮点算术数值计算的知识,在图2中,我看到其左侧2^emin的空间与右侧的空间相同。因此,直接地,左边数字的数值是2^emin - 2^(1-p)(p=24在flp32中)。如果我们进行RTE舍入,似乎我们应该使用24bit有效位之后的位作为舍入位(即(0.111_1111_1111_1111_1111_1111|r)*2^emin,请参见
--|---+---+....+-?-|---+---+....+---|-------+........
--0---------------2^emin---------2^emin+1
Run Code Online (Sandbox Code Playgroud)
我?在轴上使用问号()表示半点
对于第二种情况:在IEEE标准中,对于次正规检测,在四舍五入之前说“无界”指数blabla。因此,如果我们可以具有无穷大的指数,则可以将精确结果移到(1.1111...1|r')*2^(emin-1)。在这种情况下,我们在上保留了一半的左空间2^emin。这与上的所有其他相邻空格相似2^e,但是一旦在轴上接近0,空格的数量将变为无限。看到
--|...++++|-+-+-+...|---+---+....+-?-|-------+........
--0-....----------2^emin-1----------2^emin
------| here is keep shrinking
Run Code Online (Sandbox Code Playgroud)
在这种情况下,似乎我们应该将精确结果四舍五入为
(1.111_1111_1111_1111_1111_1111|r')*2^(emin-1)
Run Code Online (Sandbox Code Playgroud)
通过将情况1的结果左移1位,表示保护位在这种情况下很有用。
在这两种情况下,我们具有不同的舍入位,因此可能会得到不同的结果。我们应该遵循哪种情况?我看不到任何有关此主题的文档/论文。