/C++

# std::erf, std::erff, std::erfl

Defined in header `<cmath>`
```float       erf ( float arg );
float       erff( float arg );```
(1) (since C++11)
`double      erf ( double arg );`
(2) (since C++11)
```long double erf ( long double arg );
long double erfl( long double arg );```
(3) (since C++11)
`double      erf ( IntegralType arg );`
(4) (since C++11)
1-3) Computes the error function of `arg`.
4) A set of overloads or a function template accepting an argument of any integral type. Equivalent to 2) (the argument is cast to `double`).

### Parameters

 arg - value of a floating-point or Integral type

### Return value

If no errors occur, value of the error function of `arg`, that is
 2 √π
arg
0
e-t2
dt, is returned.

If a range error occurs due to underflow, the correct result (after rounding), that is.

 2*arg √π
is returned

### Error handling

Errors are reported as specified in `math_errhandling`.

If the implementation supports IEEE floating-point arithmetic (IEC 60559),

• If the argument is ±0, ±0 is returned
• If the argument is ±∞, ±1 is returned
• If the argument is NaN, NaN is returned

### Notes

Underflow is guaranteed if `|arg| < DBL_MIN*(sqrt(π)/2)` erf(

 x σ√2
) is the probability that a measurement whose errors are subject to a normal distribution with standard deviation σ is less than x away from the mean value.

### Example

The following example calculates the probability that a normal variate is on the interval (x1, x2).

```#include <iostream>
#include <cmath>
#include <iomanip>
double phi(double x1, double x2)
{
return (std::erf(x2/std::sqrt(2)) - std::erf(x1/std::sqrt(2)))/2;
}
int main()
{
std::cout << "normal variate probabilities:\n"
<< std::fixed << std::setprecision(2);
for(int n=-4; n<4; ++n)
std::cout << "[" << std::setw(2) << n << ":" << std::setw(2) << n+1 << "]: "
<< std::setw(5) << 100*phi(n, n+1) << "%\n";

std::cout << "special values:\n"
<< "erf(-0) = " << std::erf(-0.0) << '\n'
<< "erf(Inf) = " << std::erf(INFINITY) << '\n';
}```

Output:

```normal variate probabilities:
[-4:-3]:  0.13%
[-3:-2]:  2.14%
[-2:-1]: 13.59%
[-1: 0]: 34.13%
[ 0: 1]: 34.13%
[ 1: 2]: 13.59%
[ 2: 3]:  2.14%
[ 3: 4]:  0.13%
special values:
erf(-0) = -0.00
erf(Inf) = 1.00```