Oracle® Developer Studio 12.5:数值计算指南

退出打印视图

更新时间: 2016 年 6 月
 
 

3.2 Oracle Developer Studio 数学库

本节介绍了 Oracle Developer Studio 编译器所包含的数学库。

Oracle Developer Studio 12.5 的缺省基安装目录在 Oracle Solaris 上是 /opt/developerstudio12.5,在 Linux 上是 /opt/oracle/developerstudio12.5。但是,在安装过程中可以指定不同的基安装目录 install-dir

缺省情况下,在目录 install-dir/lib/compilers 及其子目录中安装 Oracle Developer Studio 静态 32 位库。在 install-dir/lib/compilers/sparcv9 中(在 SPARC 上)和 install-dir/lib/compilers/amd64 中(在 x86 上)安装静态 64 位库。

数值计算指南还介绍了共享 libmlibmvec 库,这些库仅可用于 Oracle Solaris,安装在 /usr/lib(对于 32 位版本)和 /usr/lib/64(对于 64 位版本)中。

对于 Oracle Solaris,math.hsunmath.h 库头文件安装在 /usr/include 中。对于 Linux,math.h 库头文件安装在 install-dir/lib/compilers/include/cc 中。

静态归档文件、共享对象和包含文件的 Oracle Developer Studio install-dirsubdirectories 在不同发行版中会有所变化。

3.2.1 Oracle 数学库

libsunmath 数学库中包含未被任何标准指定但在数值软件中很实用的函数。它还包含 libm.so.2 中提供但 libm.so.1 中未提供的许多函数。libsunmath 同时作为共享对象文件和静态归档文件进行提供。

表 16列出了 libsunmath 中提供,而 libm.so.2 中未提供的函数。 对于每个数学函数,表中只给出函数从 C 程序中调用时所使用的双精度版本的名称。

表 16  libsunmath 的内容
类型
函数名
初等超越函数
exp10
以度为单位的三角函数
asindacosdatandatan2dsindcosdsincosdtand
按 ?? 缩放的三角函数
asinpiacospiatanpiatan2pisinpicospisincospitanpi
使用双精度 ?? 参数约简的三角函数
asinpacospatanp,sinpcospsincosptanp
财务函数
annuitycompound
取整函数
aintanintirintnint
IEEE 标准推荐的函数
signbit
IEEE 分类函数
fp_classisinfisnormalissubnormaliszero
提供有用 IEEE 值的函数
min_subnormalmax_subnormalmin_normalmax_normalinfinitysignaling_nanquiet_nan
加法的随机数生成器
i_addran_i_addrans_i_init_addrans_i_get_addrans_i_set_addrans_r_addran_r_addrans_r_init_addrans_r_get_addrans_r_set_addrans_d_addran_d_addrans_d_init_addrans_d_get_addrans_d_set_addrans_u_addrans_
线性同余随机数生成器
i_lcran_i_lcrans_i_init_lcrans_i_get_lcrans_i_set_lcrans_r_lcran_r_lcrans_d_lcran_d_lcrans_u_lcrans_
进位相乘的随机数生成器
i_mwcran_i_mwcrans_i_init_mwcrans_i_get_mwcrans_i_set_mwcransi_lmwcran_i_lmwcrans_i_llmwcran_i_llmwcrans_u_mwcran_u_mwcrans_u_lmwcran_u_lmwcransu_llmwcran_u_llmwcrans_r_mwcran_r_mwcrans_d_mwcran_d_mwcrans_smwcran_
随机数置乱器
i_shufrans_r_shufrans_d_shufrans_u_shufrans_
数据转换
convert_external
控制舍入模式和浮点异常标志
ieee_flags
浮点陷阱处理
ieee_handlersigfpe
显示状态
ieee_retrospective
启用/禁用非标准的算法
standard_arithmeticnonstandard_arithmetic

3.2.2 优化库

libmopt 库提供了 libmlibsunmath 中一些函数的更快版本。libmopt 仅作为静态归档文件提供。libmopt 中包含的例程替代了 libm 中的相应例程。通常,libmopt 版本的速度明显更快。与 libm 版本(支持任何 ANSI/POSIX®、SVID、X/Open 或 C99/IEEE 样式的异常情况处理方式)不同,libmopt 例程仅支持 C99/IEEE 样式的异常情况处理方式。(请参见标准符合性。)另外,无论采用何种浮点舍入方向模式,libm 中的所有数学函数均可提供相当准确的结果,而未定义调用 libmopt 中带有舍入方向而非舍入为最接近的函数的结果。无论何时调用标准数学函数,使用 libmopt 的程序必须确保缺省的舍入为最接近模式生效。要使用 libmopt 链接程序,请使用 –xlibmopt 标志。