# erfc, erfcf, erfcl

< c‎ | numeric‎ | math

定义于头文件 `<math.h>` |  |
float erfcf( float arg ); | (1) | (C99 起)
double erfc( double arg ); | (2) | (C99 起)
long double erfcl( long double arg ); | (3) | (C99 起)
定义于头文件 `<tgmath.h>` |  |
#define erfc( arg ) | (4) | (C99 起)

1-3) 计算 `arg` 的补误差函数，即 `1.0-erf(arg)` ，但对于大的 `arg` 无精度损失。
4) 泛型宏：若 `arg` 拥有 long double 类型，则调用 `erfcl` 。否则，若 `arg` 拥有整数类型或 double 类型，则调用 `erfc` 。否则，调用 `erfcf` 。

### 参数

arg | - | 浮点值

### 返回值

若不出现错误，则返回 `arg` 的补误差函数的值，即 \(\frac{2}{\sqrt{\pi} }\int_{arg}^{\infty}{e^{-{t^2} }\mathsf{d}t}\)

2
√π

∫∞
arg e-t2
dt 或 \({\small 1-\operatorname{erf}(arg)}\)1-erf(arg) 。

若出现源于下溢的值域错误，则返回（舍入后的）正确结果。

### 错误处理

报告 `math_errhandling` 中指定的错误。

若实现支持 IEEE 浮点算术（ IEC 60559 ），则

- 若参数为 +∞ ，则返回 +0
- 若参数为 -∞ ，则返回 2
- 若参数为 NaN ，则返回 NaN

### 注解

对于 IEEE 兼容的 `double` 类型，若 `arg` > 26.55 则保证下溢。

### 示例

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

    double normalCDF(double x) // Phi(-∞, x) 又称为 N(x)
    {
        return erfc(-x/sqrt(2))/2;
    }
    int main(void)
    {
        puts("normal cumulative distribution function:");
        for(double n=0; n<1; n+=0.1)
            printf("normalCDF(%.2f) %5.2f%%\n", n, 100*normalCDF(n));

        puts("special values:");
        printf("erfc(-Inf) = %f\n", erfc(-INFINITY));
        printf("erfc(Inf) = %f\n", erfc(INFINITY));
    }

输出：

    normal cumulative distribution function:
    normalCDF(0.00) 50.00%
    normalCDF(0.10) 53.98%
    normalCDF(0.20) 57.93%
    normalCDF(0.30) 61.79%
    normalCDF(0.40) 65.54%
    normalCDF(0.50) 69.15%
    normalCDF(0.60) 72.57%
    normalCDF(0.70) 75.80%
    normalCDF(0.80) 78.81%
    normalCDF(0.90) 81.59%
    normalCDF(1.00) 84.13%
    special values:
    erfc(-Inf) = 2.000000
    erfc(Inf) = 0.000000

### 引用

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

  - 7.12.8.2 The erfc functions (p: 249-250)

  - 7.25 Type-generic math <tgmath.h> (p: 373-375)

  - F.10.5.2 The erfc functions (p: 525)

- C99 标准（ISO/IEC 9899:1999）：

  - 7.12.8.2 The erfc functions (p: 230)

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

  - F.9.5.2 The erfc functions (p: 462)

### 参阅

erf erff erfl (C99)(C99)(C99) | 计算误差函数 (函数)

### 外部链接

Weisstein, Eric W. "Erfc." 来自 MathWorld--A Wolfram Web Resource 。