袋Sun 数值计算指南 SunTM Studio 11 Sun Microsystems,Inc. www.sun.com 亮,1月e, 请将有关本文档的意见和建议提交至:http:/wwm,un.com/hwdoca/feedback
Sun Microsystems, Inc. www.sun.com 请将有关本文档的意见和建议提交至:http://www.sun.com/hwdocs/feedback 数值计算指南 Sun™ Studio 11 文件号码 819-4817-10 2005 年 11 月,修订版 A
版根所有©2005 Sun Microsystems,lnc,4150 Network Circle,Santa Clara,Califomia95054,U.S.A.保留所有权利。 表案紧装,的销克深效紧款花准许可汉。以及ARoa人omg山甲“ 本发行版可能包含由第三方开发的内容。 铲餐蒙器售餐y系统面生出来的,并获料了如利尼亚大学的许可.UN议是X/OpnCompany,.Ld在关同和其他国 兰款宽表 态尧簧明置用爱线去蒂亮费示或贰示的条件、陈述和担保。包括时适辅性、适用性或非侵权性的以示保证,均不承担任何责任,除非 Adobe PostScript
版权所有 © 2005 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, California 95054, U.S.A. 保留所有权利。 美国政府权利 - 商业用途。政府用户应遵循 Sun Microsystems, Inc. 的标准许可协议,以及 FAR (Federal Acquisition Regulations,即 “联邦 政府采购法规”)的适用条款及其补充条款。必须依据许可证条款使用。 本发行版可能包含由第三方开发的内容。 本产品的某些部分可能是从 Berkeley BSD 系统衍生出来的,并获得了加利福尼亚大学的许可。UNIX 是 X/Open Company, Ltd. 在美国和其他国 家/地区独家许可的注册商标。 Sun、Sun Microsystems、Sun 徽标、Java 和 JavaHelp 是 Sun Microsystems, Inc. 在美国和其他国家/地区的商标或注册商标。所有的 SPARC 商 标的使用均已获得许可,它们是 SPARC International, Inc. 在美国和其他国家/地区的商标或注册商标。标有 SPARC 商标的产品均基于由 Sun Microsystems, Inc. 开发的体系结构。 本服务手册所介绍的产品以及所包含的信息受美国出口控制法制约,并应遵守其他国家/地区的进出口法律。严禁将本产品直接或间接地用于核 设施、导弹、生化武器或海上核设施,也不能直接或间接地出口给核设施、导弹、生化武器或海上核设施的最终用户。严禁出口或转口到美国 禁运的国家/地区以及美国禁止出口清单中所包含的实体,包括但不限于被禁止的个人以及特别指定的国家/地区的公民。 本文档按 “原样”提供,对于所有明示或默示的条件、陈述和担保,包括对适销性、适用性或非侵权性的默示保证,均不承担任何责任,除非 此免责声明的适用范围在法律上无效
目录 阅读本书之前xi 本书面向的读者x出 本书的结构x 印刷约定xiv Shell提示符xw 支持的平台w 访问Sun Studio软件和手册页xvi 访问Sun Studio文档xvii 访问相关的Solaris文档xx 开发者资源xx 联系Sun技术支持Xxi Sun欢迎您提出意见Xxi 1.简介1 浮点环境1 2.IEEE算法1 IEEE算法模型1 什么是EEE算法?1 EEE格式2
iii 目录 阅读本书之前 xiii 本书面向的读者 xiii 本书的结构 xiii 印刷约定 xiv Shell 提示符 xv 支持的平台 xv 访问 Sun Studio 软件和手册页 xvi 访问 Sun Studio 文档 xviii 访问相关的 Solaris 文档 xx 开发者资源 xx 联系 Sun 技术支持 xxi Sun 欢迎您提出意见 xxi 1. 简介 1 浮点环境 1 2. IEEE 算法 1 IEEE 算法模型 1 什么是 IEEE 算法? 1 IEEE 格式 2
存储格式2 单精度格式3 双精度格式5 双精度扩展格式(SPARC)7 双精度扩展格式(x86)9 十进制表示法的范围和精度12 Solaris环境中的基数转换15 下溢15 下溢阀值16 IEEE算法如何处理下溢?16 为什么使用渐进下溢?17 渐进下溢的误差属性17 有关渐进下溢与Store0的两个示例20 下溢有问题吗?21 3.数学库1 Solaris数学库1 标准数学库1 矢量数学库3 Sun Studio数学库3 Sun数学库4 优化库5 矢量数学库(仅SPARC)6 1ibm9x数学库6 单、双和扩展精度/四倍精度7 IEEE支持函数8 ieee functions(3m)fieee sun(3m)8 ieee_values(3m)10 ieee_flags(3m)12 w《数值计算指南》·2005年11月
iv 《数值计算指南》 • 2005 年 11 月 存储格式 2 单精度格式 3 双精度格式 5 双精度扩展格式 (SPARC) 7 双精度扩展格式 (x86) 9 十进制表示法的范围和精度 12 Solaris 环境中的基数转换 15 下溢 15 下溢阈值 16 IEEE 算法如何处理下溢? 16 为什么使用渐进下溢? 17 渐进下溢的误差属性 17 有关渐进下溢与 Store 0 的两个示例 20 下溢有问题吗? 21 3. 数学库 1 Solaris 数学库 1 标准数学库 1 矢量数学库 3 Sun Studio 数学库 3 Sun 数学库 4 优化库 5 矢量数学库 (仅 SPARC) 6 libm9x 数学库 6 单、双和扩展精度 / 四倍精度 7 IEEE 支持函数 8 ieee_functions(3m) 和 ieee_sun(3m) 8 ieee_values(3m) 10 ieee_flags(3m) 12
ieee_retrospective(3m)13 nonstandard arithmetic(3m)15 C99浮点环境函数15 异常标记函数16 舍入控制17 环境函数17 1ibm和1 ibsunmath的实现功能18 关于算法19 三角函数的参数缩小19 数据转换例程20 随机数工具20 4.异常和异常处理1 何为异常?1 表41的注释3 检测异常4 ieee_flags(3m)4 C99异常标志函数6 查找异常7 使用调试器查找异常8 使用信号处理程序来查找异常15 使用1ibm异常处理扩展来查找异常20 处理异常26 A.示例1 EEE算法1 数学库3 随机数生成器3 EEE建议的函数6 目录v
目录 v ieee_retrospective(3m) 13 nonstandard_arithmetic(3m) 15 C99 浮点环境函数 15 异常标记函数 16 舍入控制 17 环境函数 17 libm 和 libsunmath 的实现功能 18 关于算法 19 三角函数的参数缩小 19 数据转换例程 20 随机数工具 20 4. 异常和异常处理 1 何为异常? 1 表 4-1 的注释 3 检测异常 4 ieee_flags(3m) 4 C99 异常标志函数 6 查找异常 7 使用调试器查找异常 8 使用信号处理程序来查找异常 15 使用 libm 异常处理扩展来查找异常 20 处理异常 26 A. 示例 1 IEEE 算法 1 数学库 3 随机数生成器 3 IEEE 建议的函数 6
IEEE特殊值10 ieee f1ags-舍入方向12 C99浮点环境函数14 异常和异常处理18 ieee f1ags一产生的异常18 ieee handler-捕获异常2l ieee_handler-出现异常时终止30 1ibm异常处理功能30 在Fortran程序中使用1ibm异常处理36 杂项40 sigfpe一捕获整数异常40 从C中调用Fortran41 有用的调试命令45 B.SPARC行为和实现1 浮点硬件1 浮点状态寄存器和队列4 需要软件支持的特殊类6 fpversion()函数-查找有关FPU的信息9 C.x86行为和实现1 D.What Every Computer Scientist Should Know About Floating-Point Arithmetic 1 摘要1 简介2 舍入误差2 浮点格式3 相对误差和Up4 保护数位5 ⅵ《数值计算指南》·2005年11月
vi 《数值计算指南》 • 2005 年 11 月 IEEE 特殊值 10 ieee_flags -舍入方向 12 C99 浮点环境函数 14 异常和异常处理 18 ieee_flags - 产生的异常 18 ieee_handler -捕获异常 21 ieee_handler -出现异常时终止 30 libm 异常处理功能 30 在 Fortran 程序中使用 libm 异常处理 36 杂项 40 sigfpe -捕获整数异常 40 从 C 中调用 Fortran 41 有用的调试命令 45 B. SPARC 行为和实现 1 浮点硬件 1 浮点状态寄存器和队列 4 需要软件支持的特殊类 6 fpversion(1) 函数 - 查找有关 FPU 的信息 9 C. x86 行为和实现 1 D. What Every Computer Scientist Should Know About Floating-Point Arithmetic 1 摘要 1 简介 2 舍入误差 2 浮点格式 3 相对误差和 Ulp 4 保护数位 5
抵消6 精确舍入的运算10 EEE标准14 格式与运算14 特殊数量18 NaN 19 异常、标志和陷阱处理程序24 系统方面28 指令集28 语言和编译器30 异常处理36 详细资料37 舍入误差38 二进制到十进制的转换46 求和中的误差47 小结48 致谢49 参考书目49 定理14和定理851 定理1451 证明51 各种I正EE754实现的差别55 当前的EEE754实现56 在基于扩展的系统上计算的缺陷57 扩展精度的程序设计语言支持62 结束语65 E.标准遵循性1 1ibm特例1
目录 vii 抵消 6 精确舍入的运算 10 IEEE 标准 14 格式与运算 14 特殊数量 18 NaN 19 异常、标志和陷阱处理程序 24 系统方面 28 指令集 28 语言和编译器 30 异常处理 36 详细资料 37 舍入误差 38 二进制到十进制的转换 46 求和中的误差 47 小结 48 致谢 49 参考书目 49 定理 14 和定理 8 51 定理 14 51 证明 51 各种 IEEE 754 实现的差别 55 当前的 IEEE 754 实现 56 在基于扩展的系统上计算的缺陷 57 扩展精度的程序设计语言支持 62 结束语 65 E. 标准遵循性 1 libm 特例 1
影响标准规范的其他编译器标志4 关于C99规范的附加说明5 IA-1遵循性5 E参考资料1 第2章:“EEE算法”1 第3章:“数学库”2 第4章:“异常和异常处理”3 附录B:“SPARC行为和实现”3 标准3 测试程序4 术语表1 索引1 vim《数值计算指南》·2005年11月
viii 《数值计算指南》 • 2005 年 11 月 影响标准规范的其他编译器标志 4 关于 C99 规范的附加说明 5 LIA-1 遵循性 5 F. 参考资料 1 第 2 章:“IEEE 算法” 1 第 3 章:“数学库” 2 第 4 章:“异常和异常处理” 3 附录 B:“SPARC 行为和实现” 3 标准 3 测试程序 4 术语表 1 索引 1
图 图21 单精度存储格式3 图2-2 双精度存储格式5 图2-3 双精度扩展格式(SPARC)7 图2-4 双精度扩展格式(x86)10 图2-5 使用十进制表示法和二进制表示法定义的数字集比较13 图2-6 数轴18 图B-1 SPARC浮点状态寄存器5 图D-1 B=2、p=3、mn=1、mx=2时规格化的数4 图D-2 清零与渐进下溢的比较23 x
ix 图 图 2-1 单精度存储格式 3 图 2-2 双精度存储格式 5 图 2-3 双精度扩展格式 (SPARC) 7 图 2-4 双精度扩展格式 (x86) 10 图 2-5 使用十进制表示法和二进制表示法定义的数字集比较 13 图 2-6 数轴 18 图 B-1 SPARC 浮点状态寄存器 5 图 D-1 β = 2、 p = 3、 emin = -1、 emax = 2 时规格化的数 4 图 D-2 清零与渐进下溢的比较 23
×《数值计算指南》·2005年11月
x 《数值计算指南》 • 2005 年 11 月