Oracle® Solaris Studio 12.4:数值计算指南

退出打印视图

更新时间: 2015 年 1 月
 
 

3.6.1 关于算法

在基于 SPARC 的系统上,libmlibsunmath 中的初等函数是使用表驱动算法和多项式/有理数近似算法的组合实现的。所发布的这些算法不断变化,以实现更高的性能或精确度。在基于 x86 的系统上,libmlibsunmath 中的某些初等函数是使用 x86 指令集中提供的初等函数内核指令实现的;其他函数是用基于 SPARC 的系统上使用的相同表驱动算法或多项式/有理数近似算法实现的。

libm 中常见初等函数及 libsunmath 中常见单精度初等函数的表驱动算法和多项式/有理数近似算法都将准确结果传送到最后位置单元 (unit in last place, ulp) 内。 在基于 SPARC 的系统上,libsunmath 中的常见四倍精度初等函数将精确结果传送到一个 ulp 内,但是 expm1llog1pl 函数除外,它们将精确结果传送到两个 ulps 内。(常见函数包括指数函数、对数函数、幂函数和弧度参数的循环三角函数。其他函数,如双曲三角函数和高等超越函数是不精确的。)通过运算法则直接分析获取这些误差界限。用户通过使用 BeEF(Berkeley Elementary Function 测试程序)也能检测这些例程的精确度,可以从 ucbtest 软件包中的 netlib 获得该程序,网址为 http://www.netlib.org/fp/ucbtest.tgzhttp://www.netlib.org/fp/ucbtest.tgz