# casinf, casin, casinl

< c‎ | numeric‎ | complex

定义于头文件 `<complex.h>` |  |
float complex casinf( float complex z ); | (1) | (C99 起)
double complex casin( double complex z ); | (2) | (C99 起)
long double complex casinl( long double complex z ); | (3) | (C99 起)
定义于头文件 `<tgmath.h>` |  |
#define asin( z ) | (4) | (C99 起)

1-3) 计算 `z` 的复弧（反）正弦，分支切割在沿实轴的 [−1,+1] 区间外。
4) 泛型宏：若 `z` 拥有 long double complex 类型，则调用 `casinl` 若 `z` 拥有 double complex 类型，则调用 `casin` ，若 `z` 拥有 float complex 类型，则调用 `casinf` 。若 `z` 为实数或整数，则宏调用对应的实数函数（ asinf 、 asin 、 asinl ）。若 `z` 为虚数，则宏调用函数 asinh 的对应实数版本，实现公式 asin(iy) = i asinh(y) ，而宏的返回类型为虚数。

### 参数

z | - | 复参数

### 返回值

若不出现错误，则返回 `z` 的复弧正弦，在沿虚轴无界，沿实轴在区间 [−π/2; +π/2] 中的条状范围中。

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

### 注意

反正弦（或弧正弦）是多值函数，且在复平面上要求分支切割。约定将分支切割置于实轴上的线段 (-∞,-1) 和 (1,∞) 上。

弧（反）正弦主值的数学定义是 asin z = -iln(iz + √1-z2
) 。

对于任何 z ， asin(z) = acos(-z) -

π
2

。

### 示例

    #include <stdio.h>
    #include <math.h>
    #include <complex.h>

    int main(void)
    {
        double complex z = casin(-2);
        printf("casin(-2+0i) = %f%+fi\n", creal(z), cimag(z));

        double complex z2 = casin(conj(-2)); // 或 CMPLX(-2, -0.0)
        printf("casin(-2-0i) (the other side of the cut) = %f%+fi\n", creal(z2), cimag(z2));

        // 对于任何 z ， asin(z) = acos(-z) - pi/2
        double pi = acos(-1);
        double complex z3 = csin(cacos(conj(-2))-pi/2);
        printf("csin(cacos(-2-0i)-pi/2) = %f%+fi\n", creal(z3), cimag(z3));
    }

输出：

    casin(-2+0i) = -1.570796+1.316958i
    casin(-2-0i) (the other side of the cut) = -1.570796-1.316958i
    csin(cacos(-2-0i)-pi/2) = 2.000000+0.000000i

### 引用

- C11 标准（ISO/IEC 9899:2011）：

  - 7.3.5.2 The casin functions (p: 190)

  - 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.2 The casin functions (p: 172)

  - 7.22 Type-generic math <tgmath.h> (p: 335-337)

  - G.7 Type-generic math <tgmath.h> (p: 480)

### 参阅

cacos cacosf cacosl (C99)(C99)(C99) | 计算复数反余弦 (函数)
catan catanf catanl (C99)(C99)(C99) | 计算复数反正切 (函数)
csin csinf csinl (C99)(C99)(C99) | 计算复数正弦 (函数)
asin asinf asinl (C99)(C99) | 计算反正弦（ \({\small\arcsin{x} }\)arcsin(x) ） (函数)