ctanf, ctan, ctanl

来自cppreference.com
< c‎ | numeric‎ | complex
 
 
 
复数算术
类型与虚数常量
(C99)
(C11)
(C99)
操作
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
幂与指数函数
(C99)
(C99)
(C99)
(C99)
三角函数
(C99)
(C99)
ctan
(C99)
(C99)
(C99)
(C99)
双曲函数
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
 
定义于头文件 <complex.h>
float complex       ctanf( float complex z );
(1) (C99 起)
double complex      ctan( double complex z );
(2) (C99 起)
long double complex ctanl( long double complex z );
(3) (C99 起)
定义于头文件 <tgmath.h>
#define tan( z )
(4) (C99 起)
1-3) 计算 z 的复正切。
4) 泛型宏:若 z 拥有 long double complex 类型,则调用 ctanl 。若 z 拥有 double complex 类型,则调用 ctan 。若 z 拥有 float complex 类型,则调用 ctanf 。若 z 为实数或整数,则该宏调用对应的实函数( tanftantanl )。若 z 为虚数,则该宏调用函数 tanh 的对应实版本,实现公式 tan(iy) = i tanh(y) ,而返回类型为虚数。

参数

z - 复参数

返回值

若无错误发生,则返回 z 的复正切。

错误和特殊情况如同运算实现为 -i * ctanh(i*z) 一般处理,其中 i 是虚数单位。

注意

正切是复平面上的解析函数,而无分支切割。它对于实部是周期的,周期为 πi ,而且沿实轴有一阶极点,位于坐标 (π(1/2 + n), 0) 。然而无常用浮点表示能准确表示 π/2 ,故而没有值使得极点错误出现。

正切的数学定义是 tan z =
i(e-iz
-eiz
)
e-iz
+eiz

示例

#include <stdio.h>
#include <math.h>
#include <complex.h>
 
int main(void)
{
    double complex z = ctan(1);  // 表现类似沿实轴的实正切
    printf("tan(1+0i) = %f%+fi ( tan(1)=%f)\n", creal(z), cimag(z), tan(1));
 
    double complex z2 = ctan(I); // 表现类似沿虚轴的 tanh
    printf("tan(0+1i) = %f%+fi (tanh(1)=%f)\n", creal(z2), cimag(z2), tanh(1));
}

输出:

tan(1+0i) = 1.557408+0.000000i ( tan(1)=1.557408)
tan(0+1i) = 0.000000+0.761594i (tanh(1)=0.761594)

引用

  • C11 标准(ISO/IEC 9899:2011):
  • 7.3.5.6 The ctan functions (p: 192)
  • 7.25 Type-generic complex <tgmath.h> (p: 373-375)
  • G.7 Type-generic math <tgmath.h> (p: 545)
  • C99 标准(ISO/IEC 9899:1999):
  • 7.3.5.6 The ctan functions (p: 174)
  • 7.22 Type-generic complex <tgcomplex.h> (p: 335-337)
  • G.7 Type-generic math <tgmath.h> (p: 480)

参阅

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