CppDS.com

C++ 98 11 14 17 20 手册

casinhf, casinh, casinhl

来自cppreference.com
< c‎ | numeric‎ | complex
 
 
 
复数算术
类型与虚数常量
(C99)
(C11)
(C99)
操作
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
幂与指数函数
(C99)
(C99)
(C99)
(C99)
三角函数
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
双曲函数
(C99)
(C99)
(C99)
(C99)
casinh
(C99)
(C99)
 
定义于头文件 <complex.h>
float complex       casinhf( float complex z );
(1) (C99 起)
double complex      casinh( double complex z );
(2) (C99 起)
long double complex casinhl( long double complex z );
(3) (C99 起)
定义于头文件 <tgmath.h>
#define asinh( z )
(4) (C99 起)
1-3) 计算 z 的复反双曲正弦,分支切割在沿虚轴的 [−i; +i] 区间外。
4) 泛型宏:若 z 拥有类型 long double complex ,则调用 casinhl 。若 z 拥有类型 double complex ,则调用 casinh ,若 z 拥有类型 float complex ,则调用 casinhf 。若 z 为实数或整数,则宏调用对应的实数函数( asinhfasinhasinhl )。若 z 为虚数,则宏调用函数 asin 的对应实数版本,实现公式 asinh(iy) = i asin(y) ,而返回类型为虚数。

参数

z - 复参数

返回值

若不出现错误,则返回 z 的复反双曲正弦,在沿实轴数学上无界,沿虚轴在区间 [−iπ/2; +iπ/2] 中的条状范围中。

错误处理及特殊值

报告的错误与 math_errhandling 一致。

若实现支持 IEEE 浮点算术,则

  • casinh(conj(z)) == conj(casinh(z))
  • casinh(-z) == -casinh(z)
  • z+0+0i ,则结果为 +0+0i
  • zx+∞i (对于任何有限正 x ),则结果为 +∞+π/2
  • zx+NaNi (对于任何有限 x ),则结果为 NaN+NaNi 并可能引发 FE_INVALID
  • z+∞+yi (对于任何有限正 y ),结果为 +∞+0i
  • z+∞+∞i ,则结果为 +∞+iπ/4
  • z+∞+NaNi ,则结果为 +∞+NaNi
  • zNaN+0i ,则结果为 NaN+0i
  • zNaN+yi (对于任何有限非零 y ),则结果为 NaN+NaNi 并可能引发 FE_INVALID
  • zNaN+∞i ,则结果为 ±∞+NaNi (实部符号未指定)
  • zNaN+NaNi ,则结果为 NaN+NaNi

注意

尽管 C 标准命名此函数为“复弧双曲正弦”函数,双曲函数的反函数仍是面积函数。其参数是双曲扇形的面积,而非弧长。正确的名称是“复反双曲正弦”或较不常用的“复面积双曲正弦”。

反双曲正弦是多值函数,而在复平面上要求分支切割。约定将分支置于虚轴的线段 (-i∞,-i)(i,i∞) 上。

反双曲正弦主值的数学定义是 asinh z = ln(z + 1+z2
)

对于任何 z , asinh(z) =
asin(iz)
i

示例

#include <stdio.h>
#include <complex.h>
 
int main(void)
{
    double complex z = casinh(0+2*I);
    printf("casinh(+0+2i) = %f%+fi\n", creal(z), cimag(z));
 
    double complex z2 = casinh(-conj(2*I)); // 或 C11 中的 casinh(CMPLX(-0.0, 2))
    printf("casinh(-0+2i) (the other side of the cut) = %f%+fi\n", creal(z2), cimag(z2));
 
    // 对于任何 z , asinh(z) = asin(iz)/i
    double complex z3 = casinh(1+2*I);
    printf("casinh(1+2i) = %f%+fi\n", creal(z3), cimag(z3));
    double complex z4 = casin((1+2*I)*I)/I;
    printf("casin(i * (1+2i))/i = %f%+fi\n", creal(z4), cimag(z4));
}

输出:

casinh(+0+2i) = 1.316958+1.570796i
casinh(-0+2i) (the other side of the cut) = -1.316958+1.570796i
casinh(1+2i) = 1.469352+1.063440i
casin(i * (1+2i))/i =  1.469352+1.063440i

引用

  • C11 standard (ISO/IEC 9899:2011):
  • 7.3.6.2 The casinh functions (p: 192-193)
  • 7.25 Type-generic math <tgmath.h> (p: 373-375)
  • G.6.2.2 The casinh functions (p: 540)
  • G.7 Type-generic math <tgmath.h> (p: 545)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.3.6.2 The casinh functions (p: 174-175)
  • 7.22 Type-generic math <tgmath.h> (p: 335-337)
  • G.6.2.2 The casinh functions (p: 475)
  • G.7 Type-generic math <tgmath.h> (p: 480)

参阅

(C99)(C99)(C99)
计算复数反双曲余弦
(函数)
(C99)(C99)(C99)
计算复数反双曲正切
(函数)
(C99)(C99)(C99)
计算复数双曲正弦
(函数)
(C99)(C99)(C99)
计算反双曲正弦( arsinh(x)
(函数)
关闭