IEEE 754之前的浮点算法

在下面的评论中我的帖子是关于半精确算术的,“Raj C”询问IEEE标准754浮点运算的参数是如何选择的。我回答说我不知道,但会努力找出答案。我打电话给加州大学伯克利分校的名誉教授W. (Velvel) Kahan,他是754的主要建筑师。以下是我学到的。

内容

动物园

首先,一些背景。乔治·福赛斯,迈克·马尔科姆和我写了1977年出版的教科书从浮点运算那一章开始。本章包括下列各种计算机的浮点参数表。我身边只有一本原版书,上面有一些手写的修改,所以我扫描了一下希腊译本的表格。

那是在个人电脑和IEEE 754之前。这是一个真正的动物园。有二进制的,有十进制的,甚至还有俄罗斯的三元机器。有各种各样的单词长度。在二进制机器中,有以2为基数、以8为基数和以16为基数的标准化。

IEEE 754

大约在1976年,英特尔开始开发8086微处理器,这将成为第一批IBM个人电脑的CPU芯片。约翰·帕尔默(他曾是我在新墨西哥州的一个学生)负责设计8087浮点协处理器.他建议卡汗成为一名顾问。帕尔默和卡汉说服英特尔采取前所未有的步骤,将他们的设计公开,这样它就可以成为全行业的标准。因特尔规范成为IEEE 754的基础。

我在这个博客上写了一个关于754的两部分系列浮点denormals

卡亨的参数

Kahan告诉我,他为8087和754标准选择了设计参数。他说,他当时考虑了行业惯例,因为他希望现有的软件能以最小的困难移植到新处理器上。32位和64位的字长是由x86设计决定的。有两个架构接近他的愿景,IBM 360/370和DEC PDP-11/VAX。

动物园里就剩下这两个人了。这是浮点基数β指数和分数长度。

单,双,实验,实验
IBM 360 16 7 24 11 52
Dec VAX f 2 8 23 Dec VAX d 2 8 55 Dec VAX g 2 11 52
Ieee 754 2 8 23 11 52

没有人对IBM的16进制标准化感到满意。Argonne的Jim Cody称之为“摆动精度”。DEC VAX有两种双精度格式。D格式具有与单精度相同的窄指数范围。这是不幸的。我记得,DEC的G格式在指数中增加了3位,可能是受到了IEEE委员会正在进行的讨论的影响。

单个的VAX F格式和双格式的G格式具有与Palmer/Kahan提议相同的位长,但指数偏差是不同的,因此结果最大浮点数最小正浮点数相差四倍DEC曾游说该标准的这一部分具有一定的灵活性,但最终他们不得不满足于不完全符合标准。

回顾

40年后回顾,IEEE 754是一项了不起的成就。今天,每个人都感激地接受它。动物园已经被消灭了。只是最近引入的第二种半精确格式才让我们再次思考这些问题。

谢谢你的关心,拉杰。




发布与MATLAB®R2018b

|

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。