我正在尝试从下面的关于快速IEEE舍入源中学习IEEE舍入的特性

有人能解释一下围捕的方程式吗?修整意味着什么?地板和天花板的功能是什么?我试过IEEE 754,但没有提到这些
发布于 2013-11-14 13:59:25
让我们从楼层()和天花板()开始(从现在起我将称之为"ceil“)。这些是将实数映射到整数的基本数学函数。从形式上讲,它们的定义如下:
floor(x) = max { n in Z | n <= x }
ceil(x) = min { n in Z | n >= x }更明显的是,x的地板是不大于x的最大整数,而ceil是不小于x的最小整数。下面是一些例子:
floor(1.5)是1。ceil(2)是2。floor(-3.14159)是-4。有关更多细节,请咨询维基百科。
好,现在让我们转到四舍五入。每个实数x要么是整数(在这种情况下是floor(x) == x == ceil(x)),要么位于两个整数floor(x) < x < ceil(x)之间。从数学上讲,“舍入规则”是一个函数f,它用以下属性将实数映射到整数:对于每个实数x、f(x) = floor(x)或f(x) = ceil(x)。这为在任何情况下选择可能的结果留下了很大的灵活性,因此有许多不同的舍入规则。下面是一些示例(这些当然不是详尽无遗的):
floor( )和ceil( )中的每一个都是舍入规则。trunc( )的数学函数。可以将其定义为trunc(x) = ceil(x) (如果是x < 0 ),而trunc(x) = floor(x)则定义为*。例如,trunc(1.5)是1,trunc(-2.7)是-2。x < 0的结果是floor(x),则结果是ceil(x)。这个规则没有一个通用的数学名称,所以我把它叫做round-away( )。例如:round-away(1.001)是2,round-away(-0.7071067812)是-1。x是整数,则返回x。否则,看看floor(x)和ceil(x)。因为它们是连续整数,所以其中一个是偶数,另一个是奇数。把奇怪的还回去。例如:round-to-odd(1.001)是1,round-to-odd(-2.001)是-3,round-to-odd(4.0)是4.0。round( ),但这个名称在C库中被用来表示不同的舍入规则,我不想混淆每个人,所以我将在这里将它命名为rne( )。这里的思路如下:如果有一个最接近x的唯一整数,则返回该整数。否则,x正好位于两个整数之间;其中一个是偶数,另一个是奇数。把偶数还回去。最后一条规则可以写成"RU和补“,但从数学角度来看,这是一种有点奇怪的想法。更常见的是,它的正式定义大致如下:
rne(x) = floor(x) if x - floor(x) < 0.5
floor(x) if x - floor(x) = 0.5 and floor(x) is even.
ceil(x) if x - floor(x) = 0.5 and floor(x) is odd.
ceil(x) if x - floor(x) > 0.5这个rne( )规则的一些实际操作示例:rne(0.5)是0。rne(-1.5)是-2。rne(1.3)是1。rne(1.8)是2。
好的,这都是关于整数的四舍五入。这和舍入最近的浮点数有什么关系,比如IEEE-754?舍入规则不仅可用于整数的整和,还可通过简单地将其按b**n因子缩放到任意固定数的数字,其中b是表示的基础,而n被选中,以便该数字的所需舍入点最终位于单位位置( LSB)。当然,我们实际上并不需要对结果进行缩放;相反,我们只需将舍入规则中的ceil(x)和floor(x)替换为x值四舍五入,并达到所需的数字数。
*我在这里定义实数的数学函数,而不是给出IEEE-754的实现。因此,不需要处理诸如-0、inf或nan这样的边缘情况。
https://stackoverflow.com/questions/19975413
复制相似问题