# std::erf

From cppreference.com
< cpp‎ | numeric‎ | math

Defined in header `<cmath>` |  |
float erf( float arg ); | (1) | (since C++11)
double erf( double arg ); | (2) | (since C++11)
long double erf( long double arg ); | (3) | (since C++11)
double erf( Integral 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)

Run this code

    #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

### See also

erfc (C++11) | complementary error function (function)
C documentation for erf

### External links

Weisstein, Eric W. "Erf." From MathWorld--A Wolfram Web Resource.

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/numeric/math/erf&oldid=71164"