联系Sun技术支持 如果您遇到通过本文档无法解决的技术问题,请访问以下网址: http://www.sun.com/service/contacting Sun欢迎您提出意见 Su致力于提高其文档的质量,并十分乐意收到您的意见和建议,您可以通过以下网址提 交您的意见和建议: http://www.sun.com/hwdocs/feedback 请在电子邮件的主题行中注明文档的文件号码。例如,本文档的文件号码是819-4817-10。 阅读本书之前xx
阅读本书之前 xxi 联系 Sun 技术支持 如果您遇到通过本文档无法解决的技术问题,请访问以下网址: http://www.sun.com/service/contacting Sun 欢迎您提出意见 Sun 致力于提高其文档的质量,并十分乐意收到您的意见和建议。您可以通过以下网址提 交您的意见和建议: http://www.sun.com/hwdocs/feedback 请在电子邮件的主题行中注明文档的文件号码。例如,本文档的文件号码是 819-4817-10
xxi《(数值计算指南》·2005年11月
xxii 《数值计算指南》 • 2005 年 11 月
第1章 简介 可以通过SPARC®和Intel x86系统上的Sun浮点环境开发可靠、高性能和可移植的数 值应用程序 ,这个浮点环境还可以韬助您研等 ?他人的数值程的后常 实现了符合EE754标准的进制浮点运算的算法模型。本于册解释了在这些系统上如 何使用EEE标准提供的选项和灵活性。 1.1 浮点环境 浮点环境由数据结构和运算组成,并通过硬件、系统软件和软件库提供给编程人员,实现 了EEE754标准。EEE754标准可以帮助您更加容易地编写数值应用程序。它是计算机 算法的坚实、全面的基础,推动了数值编程技术。 例如,硬件提供与正EE数据格式对应的存储格式 数 的坛 对这些运算 现EEE 利此类格 数子异 发 此 常且没 用户定义的处理程序时EEE规定的结果。系统软件支持EEE异常处理。软件库(包括 数学库1ibm和1 ibsunmath)按照EEE754标准在处理异常方面所采用的方式,实现 了诸如exp(x)和sin(x)等函数。(当浮点算法运算没有明确的结果时,系统通过引 发异常向用户通报此情况。)数学库还提供处理特殊EEE值的函数调用,例如If(无 穷大)或NaN(非数)。 浮点环境的三个组成部分以微妙的方式进行交互,应用程序编程人员通常看不到这些交 负充分衡有效地使用正E正机制,以使他们能够有效地第写应铁 能看到EEE标准规 建议的计算机制。 股来说,本手册指导编程人 很多有关浮点算法的问题都涉及数的基本运算。例如, ■如果在计算机系统中无法表示无限精确的结果,则运算结果是什么? ■有些基本运算(比如乘法和加法)是否具有交换性? 1-1
1-1 第 1 章 简介 可以通过 SPARC® 和 Intel x86 系统上的 Sun 浮点环境开发可靠、高性能和可移植的数 值应用程序。这个浮点环境还可以帮助您研究他人编写的数值程序的反常行为。这些系统 实现了符合 IEEE 754 标准的二进制浮点运算的算法模型。本手册解释了在这些系统上如 何使用 IEEE 标准提供的选项和灵活性。 1.1 浮点环境 浮点环境由数据结构和运算组成,并通过硬件、系统软件和软件库提供给编程人员,实现 了 IEEE 754 标准。IEEE 754 标准可以帮助您更加容易地编写数值应用程序。它是计算机 算法的坚实、全面的基础,推动了数值编程技术。 例如,硬件提供与 IEEE 数据格式对应的存储格式、对此类格式数据的运算、对这些运算 生成的结果舍入的控制、指示出现 IEEE 数字异常的状态标记以及当发生此类异常且没有 用户定义的处理程序时 IEEE 规定的结果。系统软件支持 IEEE 异常处理。软件库(包括 数学库 libm 和 libsunmath)按照 IEEE 754 标准在处理异常方面所采用的方式,实现 了诸如 exp(x) 和 sin(x) 等函数。(当浮点算法运算没有明确的结果时,系统通过引 发异常向用户通报此情况。)数学库还提供处理特殊 IEEE 值的函数调用,例如 Inf(无 穷大)或 NaN (非数)。 浮点环境的三个组成部分以微妙的方式进行交互,应用程序编程人员通常看不到这些交 互。编程人员只能看到 IEEE 标准规定或建议的计算机制。一般来说,本手册指导编程人 员充分而有效地使用 IEEE 机制,以使他们能够有效地编写应用程序软件。 很多有关浮点算法的问题都涉及数的基本运算。例如, ■ 如果在计算机系统中无法表示无限精确的结果,则运算结果是什么? ■ 有些基本运算 (比如乘法和加法)是否具有交换性?
另一类问题与异常和异常处理有关。例如,如果满足以下条件,会发生什么情况: ■两个很大的数相乘? ■被零除? ■试图计算负数的平方根? 在某些其他算法中,第一类问题可能没有预期的答案,或者按相同的方式处理第二类中的 异常情况:程序立即终止:在某些很旧的机器中,计算继续进行,但产生垃圾。 EEE754标准确保运算产生预期的数学结果,并且结果具有预期的特性。它还确保异常 情况产生指定的结果,除非用户明确地指定其他选项。 在本手册中,包含类似NN或次正规数等术语的参考资料。术语表定义了与浮点算法有 关的术语。 1-2《数值计算指南》·2005年11月
1-2 《数值计算指南》 • 2005 年 11 月 另一类问题与异常和异常处理有关。例如,如果满足以下条件,会发生什么情况: ■ 两个很大的数相乘? ■ 被零除? ■ 试图计算负数的平方根? 在某些其他算法中,第一类问题可能没有预期的答案,或者按相同的方式处理第二类中的 异常情况:程序立即终止;在某些很旧的机器中,计算继续进行,但产生垃圾。 IEEE 754 标准确保运算产生预期的数学结果,并且结果具有预期的特性。它还确保异常 情况产生指定的结果,除非用户明确地指定其他选项。 在本手册中,包含类似 NaN 或次正规数等术语的参考资料。术语表定义了与浮点算法有 关的术语
第2章 IEEE算法 本音计论用干一进先制浮占算法的AJSI/TFFF754-1985标准(清称为“FFF标准”或 “IEEE754”)所指定的算法模型。所有SPARC和 86处理器均使用EEE算法。所有 Su编译器产品均支持EEE算法的特性。 2.1 IEEE算法模型 本节介绍EEE754规范。 2.1.1 什么是IEEE算法? EEE754指定: ■两种基本的浮点格式:单精度和双精度。 ■两种扩展浮点格式:单精度扩展和双精度扩展。 此标准并未规定这些格式的精确精度和和大小,但它指定了最小精度和大小。例如, EEE双精度扩展格式必须至少具有64位有效数字精度,并总共占用至少79位。 ·浮点运算的准确度要求:加、减、乘、除, 平方根、余数,将浮点格式的数舍入为整 数值、在不同浮点格式之间转换、在浮点和整数格式之间转换以及比较。 老给超经要委朵指生用想提公是 绍的规定舍入模式的规则对精确结果进行最低限度的修改,并将经过此类修改的结果 提供给运算的目标。 ·在十进制字符串和两种基本浮点格式之一的二进制浮点数之间进行转换的准确度、单 一性和一致性要求。 2-1
2-1 第 2 章 IEEE 算法 本章讨论用于二进制浮点算法的 ANSI/IEEE 754-1985 标准 (简称为 “IEEE 标准”或 “IEEE 754”)所指定的算法模型。所有 SPARC 和 x86 处理器均使用 IEEE 算法。所有 Sun 编译器产品均支持 IEEE 算法的特性。 2.1 IEEE 算法模型 本节介绍 IEEE 754 规范。 2.1.1 什么是 IEEE 算法? IEEE 754 指定: ■ 两种基本的浮点格式:单精度和双精度。 IEEE 单精度格式具有 24 位有效数字精度,并总共占用 32 位。IEEE 双精度格式具有 53 位有效数字精度,并总共占用 64 位。 ■ 两种扩展浮点格式:单精度扩展和双精度扩展。 此标准并未规定这些格式的精确精度和和大小,但它指定了最小精度和大小。例如, IEEE 双精度扩展格式必须至少具有 64 位有效数字精度,并总共占用至少 79 位。 ■ 浮点运算的准确度要求:加、减、乘、除、平方根、余数、将浮点格式的数舍入为整 数值、在不同浮点格式之间转换、在浮点和整数格式之间转换以及比较。 求余和比较运算必须精确无误。其他的每种运算必须向其目标提供精确的结果,除非 没有此类结果,或者该结果不满足目标格式。对于后一种情况,运算必须按照下面介 绍的规定舍入模式的规则对精确结果进行最低限度的修改,并将经过此类修改的结果 提供给运算的目标。 ■ 在十进制字符串和两种基本浮点格式之一的二进制浮点数之间进行转换的准确度、单 一性和一致性要求