exp , expf , expl , expd32, expd64和 expd128 子例程
用途
计算指数函数,对数函数和幂函数。
库
IEEE 数学库 (libm.a) 或 System V 数学库 (libmsaa.a)
语法
#include <math.h> double x;
float expf (x)
float x; long double expl (x)
long double x; _Decimal32 expd32 (x)
_Decimal32 x;
_Decimal64 expd64 (x)
_Decimal64 x;
_Decimal128 expd128 (x)
_Decimal128 x;描述
这些子例程用于计算指数函数,对数函数和幂函数。
埃克斯普, 国际, 驱逐, expd32, expd64和 expd128 子例程将返回exp (x).
希望检查错误情况的应用程序应该将 错误号 全局变量设置为零,并在调用这些子例程之前调用 费克莱雷克斯普(FE_ALL_EXCEPT)。 返回时,如果 错误号 为非零或 费泰斯特西普(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW) 为非零,那么表示发生了错误。
参数
| 项 | 描述 |
|---|---|
| X | 指定部分双精度浮点值。 |
| y | 指定部分双精度浮点值。 |
返回值
在成功完成后, 埃克斯普, 国际, 驱逐, expd32, expd64和 expd128 子例程将返回 X的指数值。
如果正确的值将导致溢出,那么将发生范围错误,并且 埃克斯普, 国际, 驱逐, expd32, expd64和 expd128 子例程分别返回宏 HUGE_VAL, HUGE_VALF, HUGE_VALL, HUGE_VAL_D32, HUGE_VAL_D64和 HUGE_VAL_D128 的值。
如果正确的值将导致下流,并且不可表示,那么可能会发生范围错误,并返回 0.0 (如果受支持) 或实现定义的值。
如果x为NaN,返回NaN。
如果 X 为 ± 0 ,那么返回 1。
如果 X 为 -Inf ,那么返回 + 0。
如果 X 为 + Inf ,那么将返回 X 。
如果正确的值会导致下溢,并且可表示,那么可能会发生范围错误,并且会返回正确的值。
错误代码
使用 libm.a 库时:
| 项 | 描述 |
|---|---|
| EXP | 如果正确的值会溢出,那么 埃克斯普 子例程将返回 HUGE_VAL 值,并且 错误号 全局变量将设置为 ERANGE 值。 |
使用 libmsaa.a(-lmsaa) 时:
| 项 | 描述 |
|---|---|
| EXP | 如果正确的值将溢出,那么 埃克斯普 子例程将返回 HUGE_VAL 值。 如果正确的值将下溢,那么 埃克斯普 子例程 0 返回 0。 在这两种情况下, 错误号 都设置为 ERANGE。 |
| 驱逐 | 如果正确的值将溢出,那么 驱逐 子例程将返回 HUGE_VAL 值。 如果正确的值将下溢,那么 驱逐 子例程 0 返回 0。 在这两种情况下, 错误号 都设置为 ERANGE。 |
| 驱逐 | 如果正确的值溢出,那么 驱逐 子例程将返回 HUGE_VAL 值,并且 错误号 设置为 ERANGE。 |
当使用 libmsaa.a 库时,可以使用 matherr 子例程来更改这些错误处理过程。