expm1, expm1f, expm1l C 中的函数
expm1()、expm1f()、expm1l() 是在 C99 中引入的,可以在
expm1(x), expm1f(x), exmp1l(x) = ex – 1
例子:
double expm1(double arg);
float expm1f(float arg);
long double expm1l(long double arg);
句法:
expm1(x);
exmp1f(x);
exmp1l(x);
参数:Function Parameter expm1(x) x ⇒ float expm1f(x) x ⇒ double expm1l(x) x ⇒ long double
返回值:
1. 如果没有错误发生:Function Return Value expm1(x) ex – 1 ⇒ float expm1f(x) ex-1 ⇒ double expm1l(x) ex – 1 ⇒ long double
2. 如果溢出导致范围错误:Function Return Value expm1(x) +HUGE_VAL expm1f(x) +HUGE_VALF expm1l(x) +HUGE_VALL
3. 如果下溢导致范围错误:如果下溢导致范围错误,则返回四舍五入的结果。
4. 异常情况:报告的错误按照math_errhandling中的规定处理。Parameter Return Value ±0 ±0 NaN NaN -∞ -1 +∞ +∞
示例 1:下面是实现 exp1() 的 C 程序:
C
// C program to implement
// exp1()
#include
#include
// Driver code
int main()
{
double arg = 2.2310233;
printf("%lf\n",
expm1(arg));
return 0;
}
C
// C program to implement
// exp1f()
#include
#include
// Driver code
int main()
{
float arg = 4.121;
printf("%f\n",
expm1f(arg));
return 0;
}
C
// C program to implement
// exp1l()
#include
#include
// Driver code
int main()
{
long double arg = 5.212323323441;
printf("%Lf\n",
expm1l(arg));
return 0;
}
8.309388
示例 2:下面是实现 exp1f() 的 C 程序:
C
// C program to implement
// exp1f()
#include
#include
// Driver code
int main()
{
float arg = 4.121;
printf("%f\n",
expm1f(arg));
return 0;
}
60.620819
示例 3:下面是实现 exp1l() 的 C 程序:
C
// C program to implement
// exp1l()
#include
#include
// Driver code
int main()
{
long double arg = 5.212323323441;
printf("%Lf\n",
expm1l(arg));
return 0;
}
182.519939
为什么要使用 expm1、expm1f、expm1l?
- 如果x → 0,这些函数比表达式e x – 1更准确。
- 它们对于金融计算非常有用,例如计算(小)利率,以及计算双曲函数的倒数。