C
数值 | Numerics

cacos

cacosf, cacos, cacosl

在头文件中定义
float complex cacosf( float complex z (1)(since C99)
double complex cacos( double complex z (2)(since C99)
long double complex cacosl( long double complex z (3)(since C99)
Defined in header <tgmath.h>
#define acos( z )(4)(since C99)

1-3)z沿实轴计算在区间-1,+ 1之外的分支切口的复余弦余弦。

4)类型 - 通用宏:如果z有类型long double complexcacosl被调用。如果z有类型double complexcacos称为,如果z有类型float complexcacosf称为。如果z是真实的或整数,则宏调用相应的实函数(acosfacosacosl)。如果z是虚构的,则宏调用相应的复数版本。

参数

z-复杂的论点

返回值

如果没有发生错误,z则返回复余弦反射余弦值,范围为[0; ∞)沿实轴和在范围- π;i沿虚轴。

错误处理和特殊值

报告的错误与math_errhandling一致。

如果实现支持IEEE浮点运算,

  • cacos(conj(z)) == conj(cacos(z))

笔记

逆余弦(或反余弦)是一种多值函数,需要在复平面上进行分支切分。分支切口通常位于实轴的线段(-∞,-1)和(1,∞)处。反余弦主值的数学定义为acos z =

| 1 |

|:----|

| 2 |

π + _i_ln(_i_z + √1-z2

)

For any z, acos(z) = π - acos(-z).

#include <stdio.h> #include <math.h> #include <complex.h> int main(void) { double complex z = cacos(-2 printf("cacos(-2+0i) = %f%+fi\n", creal(z), cimag(z) double complex z2 = cacos(conj(-2) // or CMPLX(-2, -0.0) printf("cacos(-2-0i) (the other side of the cut) = %f%+fi\n", creal(z2), cimag(z2) // for any z, acos(z) = pi - acos(-z) double pi = acos(-1 double complex z3 = ccos(pi-z2 printf("ccos(pi - cacos(-2-0i) = %f%+fi\n", creal(z3), cimag(z3) }

输出:

cacos(-2+0i) = 3.141593-1.316958i cacos(-2-0i) (the other side of the cut) = 3.141593+1.316958i ccos(pi - cacos(-2-0i) = 2.000000+0.000000i

参考

  • C11标准(ISO / IEC 9899:2011):