Defined in header <math.h> | ||
|---|---|---|
float erfcf( float arg ); | (1) | (since C99) |
double erfc( double arg ); | (2) | (since C99) |
long double erfcl( long double arg ); | (3) | (since C99) |
Defined in header <tgmath.h> | ||
#define erfc( arg ) | (4) | (since C99) |
arg, that is 1.0 - erf(arg), but without loss of precision for large arg.arg has type long double, erfcl is called. Otherwise, if arg has integer type or the type double, erfc is called. Otherwise, erfcf is called.| arg | - | floating point value |
arg, that is \(\frac{2}{\sqrt{\pi} }\int_{arg}^{\infty}{e^{-{t^2} }\mathsf{d}t}\)2/√π∫∞arge-t2dt or \({\small 1-\operatorname{erf}(arg)}\)1-erf(arg), is returned. If a range error occurs due to underflow, the correct result (after rounding) is returned.
Errors are reported as specified in math_errhandling.
If the implementation supports IEEE floating-point arithmetic (IEC 60559),
For the IEEE-compatible type double, underflow is guaranteed if arg > 26.55.
#include <stdio.h>
#include <math.h>
double normalCDF(double x) // Phi(-∞, x) aka 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));
printf("special values:\n"
"erfc(-Inf) = %f\n"
"erfc(Inf) = %f\n",
erfc(-INFINITY),
erfc(INFINITY));
}Output:
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
|
(C99)(C99)(C99) | computes error function (function) |
C++ documentation for erfc |
|
| Weisstein, Eric W. "Erfc." From MathWorld — A Wolfram Web Resource. |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/numeric/math/erfc