std::erf

From cppreference.com
< cpp‎ | numeric‎ | math
 
 
 
Common mathematical functions
Functions
Basic operations
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
Exponential functions
(C++11)
(C++11)
(C++11)
(C++11)
Power functions
(C++11)
(C++11)
Trigonometric and hyperbolic functions
(C++11)
(C++11)
(C++11)
Error and gamma functions
erf
(C++11)
(C++11)
(C++11)
(C++11)
Nearest integer floating point operations
(C++11)(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
Floating point manipulation functions
(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)
(C++11)
Classification/Comparison
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Macro constants
(C++11)(C++11)(C++11)(C++11)(C++11)
 
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)

#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

(C++11)
complementary error function
(function)

External links

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