table of contents
std::erf,std::erff,std::erfl(3) | C++ Standard Libary | std::erf,std::erff,std::erfl(3) |
NAME¶
std::erf,std::erff,std::erfl - std::erf,std::erff,std::erfl
Synopsis¶
Defined in header <cmath>
float erf ( float arg ); (1) (since C++11)
float erff( float arg );
double erf ( double arg ); (2) (since C++11)
long double erf ( long double arg ); (3) (since C++11)
long double erfl( long double arg );
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
\(\frac{2}{\sqrt{\pi} }\int_{0}^{arg}{e^{-{t^2} }\mathsf{d}t}\)
2
√
π
∫arg
0e^-t2
dt, is returned.
If a range error occurs due to underflow, the correct result (after
rounding), that
is \(\frac{2\cdot arg}{\sqrt{\pi} }\)
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)
\(\operatorname{erf}(\frac{x}{\sigma \sqrt{2} })\)erf(
x
σ
√
2
) is the probability that a measurement whose errors are subject to a normal
distribution with standard deviation \(\sigma\)σ is less than \(x\)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
erfcf
erfcl complementary error function
(C++11) (function)
(C++11)
(C++11)
External links¶
Weisstein, Eric W. "Erf." From MathWorld--A Wolfram Web Resource.
2022.07.31 | http://cppreference.com |