名稱空間
變體
操作

catanhf, catanh, catanhl

來自 cppreference.com
< c‎ | numeric‎ | complex
定義在標頭檔案 <complex.h>
float complex       catanhf( float complex z );
(1) (C99 起)
double complex      catanh( double complex z );
(2) (C99 起)
long double complex catanhl( long double complex z );
(3) (C99 起)
定義於標頭檔案 <tgmath.h>
#define atanh( z )
(4) (C99 起)
1-3) 計算 z 的複數反雙曲正切,其分支割線在實軸上的區間 [−1; +1] 之外。
4) 型別泛型宏:若 z 的型別為 long double complex,則呼叫 catanhl。若 z 的型別為 double complex,則呼叫 catanh。若 z 的型別為 float complex,則呼叫 catanhf。若 z 為實數或整數,則宏呼叫對應的實函式(atanhfatanhatanhl)。若 z 為虛數,則宏呼叫 atan 的對應實數版本,實現公式 atanh(iy) = i atan(y),且返回型別為虛數。

目錄

[編輯] 引數

z - 複數引數

[編輯] 返回值

若無錯誤發生,則返回 z 的複數反雙曲正切,其範圍在數學上沿實軸無界,沿虛軸在區間 [−iπ/2; +iπ/2] 內的半條帶中。

[編輯] 錯誤處理和特殊值

錯誤按照 math_errhandling 報告

如果實現支援 IEEE 浮點算術,

  • catanh(conj(z)) == conj(catanh(z))
  • catanh(-z) == -catanh(z)
  • 如果 z+0+0i,結果是 +0+0i
  • z+0+NaNi,結果為 +0+NaNi
  • z+1+0i,結果為 +∞+0i 並引發 FE_DIVBYZERO
  • zx+∞i(對於任意有限正數 x),結果為 +0+iπ/2
  • zx+NaNi(對於任意有限非零 x),結果為 NaN+NaNi 並可能引發 FE_INVALID
  • z+∞+yi(對於任意有限正數 y),結果為 +0+iπ/2
  • z+∞+∞i,結果為 +0+iπ/2
  • z+∞+NaNi,結果為 +0+NaNi
  • zNaN+yi (對於任意有限 y),則結果為 NaN+NaNi 且可能引發 FE_INVALID
  • zNaN+∞i,結果為 ±0+iπ/2(實部的符號未指定)
  • zNaN+NaNi,則結果為 NaN+NaNi

[編輯] 注意

儘管 C 標準將此函式命名為“複數反雙曲正切”,但雙曲函式的反函式是面積函式。它們的引數是雙曲扇形的面積,而不是弧。正確的名稱是“複數反雙曲正切”,不太常見的名稱是“複數面積雙曲正切”。

反雙曲正切是一個多值函式,需要在複平面上進行分支割線。分支割線通常放置在實軸的線段 (-∞,-1][+1,+∞) 處。

反雙曲正切主值的數學定義是 atanh z =
ln(1+z)-ln(z-1)
2


對於任意 z,atanh(z) =
atan(iz)
i

[編輯] 示例

#include <stdio.h>
#include <complex.h>
 
int main(void)
{
    double complex z = catanh(2);
    printf("catanh(+2+0i) = %f%+fi\n", creal(z), cimag(z));
 
    double complex z2 = catanh(conj(2)); // or catanh(CMPLX(2, -0.0)) in C11
    printf("catanh(+2-0i) (the other side of the cut) = %f%+fi\n", creal(z2), cimag(z2));
 
    // for any z, atanh(z) = atan(iz)/i
    double complex z3 = catanh(1+2*I);
    printf("catanh(1+2i) = %f%+fi\n", creal(z3), cimag(z3));
    double complex z4 = catan((1+2*I)*I)/I;
    printf("catan(i * (1+2i))/i = %f%+fi\n", creal(z4), cimag(z4));
}

輸出

catanh(+2+0i) = 0.549306+1.570796i
catanh(+2-0i) (the other side of the cut) = 0.549306-1.570796i
catanh(1+2i) = 0.173287+1.178097i
catan(i * (1+2i))/i = 0.173287+1.178097i

[編輯] 參考

  • C11 標準 (ISO/IEC 9899:2011)
  • 7.3.6.3 catanh 函式 (p: 193)
  • 7.25 型別通用數學 <tgmath.h> (p: 373-375)
  • G.6.2.3 catanh 函式 (p: 540-541)
  • G.7 型別通用數學 <tgmath.h> (p: 545)
  • C99 標準 (ISO/IEC 9899:1999)
  • 7.3.6.3 catanh 函式 (p: 175)
  • 7.22 型別通用數學 <tgmath.h> (p: 335-337)
  • G.6.2.3 catanh 函式 (p: 475-476)
  • G.7 型別通用數學 <tgmath.h> (p: 480)

[編輯] 另請參閱

(C99)(C99)(C99)
計算復反雙曲正弦
(函式) [編輯]
(C99)(C99)(C99)
計算復反雙曲餘弦
(函式) [編輯]
(C99)(C99)(C99)
計算復雙曲正切
(函式) [編輯]
(C99)(C99)(C99)
計算反雙曲正切 (artanh(x))
(函式) [編輯]