catanf, catan, catanl

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

参数

z - 复参数

返回值

若不发生错误,则返回 z 的复弧(反)正切,在沿虚轴无界,沿实轴在区间 [−π/2; +π/2] 内的条状范围中。

按照如同以 -I * catanh(I*z) 实现运算一般处理错误和特殊情况。

注意

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

反正切主值的数学定义是 atan z = -
1
2
i [ln(1 - iz) - ln (1 + iz]

示例

#include <stdio.h>
#include <float.h>
#include <complex.h>
 
int main(void)
{
    double complex z = catan(2*I);
    printf("catan(+0+2i) = %f%+fi\n", creal(z), cimag(z));
 
    double complex z2 = catan(-conj(2*I)); // 或 CMPLX(-0.0, 2)
    printf("catan(-0+2i) (the other side of the cut) = %f%+fi\n", creal(z2), cimag(z2));
 
    double complex z3 = 2*catan(2*I*DBL_MAX); // 或 CMPLX(0, INFINITY)
    printf("2*catan(+0+i*Inf) = %f%+fi\n", creal(z3), cimag(z3));
}

输出:

catan(+0+2i) = 1.570796+0.549306i
catan(-0+2i) (the other side of the cut) = -1.570796+0.549306i
2*catan(+0+i*Inf) = 3.141593+0.000000i

引用

  • C11 标准(ISO/IEC 9899:2011):
  • 7.3.5.3 The catan functions (p: 191)
  • 7.25 Type-generic math <tgmath.h> (p: 373-375)
  • G.7 Type-generic math <tgmath.h> (p: 545)
  • C99 标准(ISO/IEC 9899:1999):
  • 7.3.5.3 The catan functions (p: 173)
  • 7.22 Type-generic math <tgmath.h> (p: 335-337)
  • G.7 Type-generic math <tgmath.h> (p: 480)

参阅

(C99)(C99)(C99)
计算复数反正弦
(函数)
(C99)(C99)(C99)
计算复数反余弦
(函数)
(C99)(C99)(C99)
计算复数正切
(函数)
(C99)(C99)
计算反正切( arctan(x)
(函数)