---
title: csqrt
description: "计算复数x的平方根。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpckit/devg/kunpengaccel_kml_0260.html
sourcePath: /source/zh/kunpenghpcs/hpckit/devg/kunpengaccel_kml_0260.html
indexId: 67e3ae7b3f66ed1d5b6a16d72a0e72e25ba1cfcc9c32611dca2e22823eb29d1861
---
# csqrt

计算复数x的平方根。

#### 接口定义

C interface：

float complex csqrtf(float complex x);

double complex csqrt(double complex x);

long double complex csqrtl(long double complex x);

Fortran interface：

RES = SQRTF(X);

RES = SQRT(X);


#### 参数

| 参数名 | 类型 | 描述 | 输入/输出 |
| --- | --- | --- | --- |
| x | 在csqrtf中，x是复数单精度浮点类型。 在csqrt中，x是复数双精度浮点类型。 在csqrtl中，x是复数长双精度浮点类型。 | 表示输入数据的浮点值。 | 输入 |


#### 返回值

| 输入值实部（x.real） | 输入值虚部（x.imag） | 输出值实部（y.real） | 输出值虚部（y.imag） |
| --- | --- | --- | --- |
| ±0 | +0 | +0 | +0 |
| ±0 | \-0 | +0 | \-0 |
| ±0 | +inf | +inf | +inf |
| ±0 | \-inf | +inf | \-inf |
| +inf | +0 | +inf | +0 |
| +inf | \-0 | +inf | \-0 |
| \-inf | +0 | +0 | +inf |
| \-inf | \-0 | +0 | \-inf |
| ±inf | +inf | +inf | +inf |
| ±inf | \-inf | +inf | \-inf |
| 任意数 | nan | nan | nan |
| nan | 任意数 | nan | nan |


#### 依赖

C: "km.h"


#### 示例

C interface：```
// typical usage
    double x1 = 1.0, x2 = 2.0, x3 = 3.0, x4 = 4.0;
    double complex cx1 = __builtin_complex(x1, x2);
    double complex cx2 = __builtin_complex(x3, x4);

    // print result
    double ry;
    double iy;
    ry = __real__ csqrt(cx1);
    iy = __imag__ csqrt(cx1);
    printf("csqrt(cx1) = %.15f, %.15f\n", ry, iy);
    ry = __real__ csqrt(cx2);
    iy = __imag__ csqrt(cx2);
    printf("csqrt(cx2) = %.15f, %.15f\n", ry, iy);
    /*
     * csqrt(cx1) = 1.272019649514069, 0.786151377757423
     * csqrt(cx2) = 2.000000000000000, 1.000000000000000
     * */
```


Fortran interface：

```
REAL(8) :: X = 3.0
PRINT*,  SQRT(X)
!
! OUTPUT
!     1.732050807568877
!
```
