函式
<cmath> <ctgmath>

expm1

     double expm1  (double x);      float expm1f (float x);long double expm1l (long double x);
     double expm1 (double x);      float expm1 (float x);long double expm1 (long double x);     double expm1 (T x);           // additional overloads for integral types
計算指數減一
返回 ex 次冪減一:ex-1

對於絕對值較小的 xexpm1 可能比 exp(x)-1 更精確。

標頭檔案 <tgmath.h> 提供了此函式的型別通用宏版本。
此標頭檔案 (<cmath>) 為整數型別提供了額外的過載:這些過載在計算前有效地將 x 轉換為 double(為任意整數型別 T 定義)。

引數

x
指數的值。

返回值

ex 次冪,減一。
如果結果的絕對值太大,無法用返回型別的值表示,則函式返回帶有正確符號的 HUGE_VAL(或 HUGE_VALFHUGE_VALL),併發生上溢範圍錯誤

如果發生上溢範圍錯誤
- 並且 math_errhandling 設定了 MATH_ERRNO:全域性變數 errno 被設定為 ERANGE
- 並且 math_errhandling 設定了 MATH_ERREXCEPT:將引發 FE_OVERFLOW

示例

1
2
3
4
5
6
7
8
9
10
11
12
/* expm1 example */
#include <stdio.h>      /* printf */
#include <math.h>       /* expm1 */

int main ()
{
  double param, result;
  param = 1.0;
  result = expm1 (param);
  printf ("expm1 (%f) = %f.\n", param, result );
  return 0;
}

輸出

expm1 (1.000000) = 1.718282.


另見