cacoshf, cacosh, cacoshl

来自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)
cacosh
(C99)
(C99)
(C99)
 
定义于头文件 <complex.h>
float complex       cacoshf( float complex z );
(1) (C99 起)
double complex      cacosh( double complex z );
(2) (C99 起)
long double complex cacoshl( long double complex z );
(3) (C99 起)
定义于头文件 <tgmath.h>
#define acosh( z )
(4) (C99 起)
1-3) 计算复数值 z 的复反双曲余弦,分支切割在沿实轴小于 1 的值上。
4) 泛型宏:若 z 拥有 long double complex 类型,则调用 cacoshl 。若 z 拥有 double complex 类型,则调用 cacosh 。若 z 拥有 float complex 类型,则调用 cacoshf 。若 z 为实数或整数,则宏调用对应的实函数( acoshfacoshacoshl )。若 z 为虚数,则宏调用对应的复数版本,而返回类型为复数。

参数

z - 复参数

返回值

z 的复反双曲余弦,沿实轴在区间 [0; ∞) 中,而沿虚轴在区间 [−iπ; +iπ] 中。

错误处理及特殊值

报告的错误与 math_errhandling 一致。

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

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

注意

尽管 C 标准命名此函数为“复弧双曲余弦”,双曲函数的反函数是面积函数。其参数为双曲扇形的面积,而非弧长。正确名称是“复反双曲余弦”,和更少见的“复面积双曲余弦”。

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

复反双曲余弦主值的数学定义是 acosh z = ln(z + z+1 z-1)

对于任何 z , acosh(z) =
z-1
1-z
acos(z)
,或在复平面上半部简单地为 i acos(z)

示例

#include <stdio.h>
#include <complex.h>
 
int main(void)
{
    double complex z = cacosh(0.5);
    printf("cacosh(+0.5+0i) = %f%+fi\n", creal(z), cimag(z));
 
    double complex z2 = conj(0.5); // 或 C11 中的 cacosh(CMPLX(0.5, -0.0))
    printf("cacosh(+0.5-0i) (the other side of the cut) = %f%+fi\n", creal(z2), cimag(z2));
 
    // 在上半平面, acosh(z) = i*acos(z) 
    double complex z3 = casinh(1+I);
    printf("casinh(1+1i) = %f%+fi\n", creal(z3), cimag(z3));
    double complex z4 = I*casin(1+I);
    printf("I*asin(1+1i) = %f%+fi\n", creal(z4), cimag(z4));
}

输出:

cacosh(+0.5+0i) = 0.000000-1.047198i
cacosh(+0.5-0i) (the other side of the cut) = 0.500000-0.000000i
casinh(1+1i) = 1.061275+0.666239i
I*asin(1+1i) = -1.061275+0.666239i

引用

  • C11 标准(ISO/IEC 9899:2011):
  • 7.3.6.1 The cacosh functions (p: 192)
  • 7.25 Type-generic math <tgmath.h> (p: 373-375)
  • G.6.2.1 The cacosh functions (p: 539-540)
  • G.7 Type-generic math <tgmath.h> (p: 545)
  • C99 标准(ISO/IEC 9899:1999):
  • 7.3.6.1 The cacosh functions (p: 174)
  • 7.22 Type-generic math <tgmath.h> (p: 335-337)
  • G.6.2.1 The cacosh functions (p: 474-475)
  • G.7 Type-generic math <tgmath.h> (p: 480)

参阅

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