erf, erff, erfl
Определено в заголовочном файле <math.h> | ||
|---|---|---|
float erff( float arg ); | (1) | (начиная с C99) |
double erf( double arg ); | (2) | (начиная с C99) |
long double erfl( long double arg ); | (3) | (начиная с C99) |
Определено в заголовочном файле <tgmath.h> | ||
#define erf( arg ) | (4) | (начиная с C99) |
arg имеет тип longdouble, вызывается erfl. В противном случае, если arg имеет целочисленный тип или тип double, вызывается erf. В остальных случаях вызывается erff.Параметры
| arg | - | значение с плавающей точкой |
Возвращаемое значение
Если ошибок не возникает, возвращается значение функции ошибок для arg, то есть {{mathjax-or|\(\frac{2}{\sqrt{\pi} }\int_{0}^{arg}{e^{-{t^2} }\mathsf{d}t}\)|
∫arg0e-t2dt}},. Если возникает ошибка диапазона из-за потери точности при уменьшении порядка, возвращается правильный результат (после округления), то есть \(\frac{2\cdot arg}{\sqrt{\pi} }\)
2*arg/√π.
Обработка ошибок
Об ошибках сообщается в соответствии с math_errhandling.
Если реализация поддерживает арифметику с плавающей точкой IEEE (IEC 60559),
- Если аргумент равен ±0, возвращается ±0
- Если аргумент равен ±∞, возвращается ±1
- Если аргумент равен NaN, возвращается NaN
Примечания
Потеря точности при уменьшении порядка гарантирована, если |arg| < DBL_MIN*(sqrt(π)/2).
\(\operatorname{erf}(\frac{x}{\sigma \sqrt{2} })\)erf(
x/σ√2)— это вероятность того, что измеренное значение, погрешности которого подчиняются нормальному распределению со стандартным отклонением \(\sigma\)σ, отличается от среднего значения менее чем на \(x\)x.
Пример
#include <math.h>
#include <stdio.h>
double phi(double x1, double x2)
{
return (erf(x2 / sqrt(2)) - erf(x1 / sqrt(2))) / 2;
}
int main(void)
{
puts("normal variate probabilities:");
for (int n = -4; n < 4; ++n)
printf("[%2d:%2d]: %5.2f%%\n", n, n + 1, 100 * phi(n, n + 1));
puts("special values:");
printf("erf(-0) = %f\n", erf(-0.0));
printf("erf(Inf) = %f\n", erf(INFINITY));
}
Вывод:
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.000000 erf(Inf) = 1.000000
Ссылки
- Стандарт C11 (ISO/IEC 9899:2011):
- 7.12.8.1 Функции erf (стр. 249)
- 7.25 Обобщённая математика для разных типов <tgmath.h> (стр. 373–375)
- F.10.5.1 Функции erf (стр. 525)
- Стандарт C99 (ISO/IEC 9899:1999):
- 7.12.8.1 Функции erf (стр. 230)
- 7.22 Обобщённая математика для разных типов <tgmath.h> (стр. 335–337)
- F.9.5.1 Функции erf (стр. 462)
См. также
|
(C99)(C99)(C99) | вычисляет дополнительную функцию ошибок (функция) |
Документация C++ для erf |
|
Внешние ссылки
| Вайсстайн, Эрик У. «Erf». Из MathWorld — веб-ресурса Wolfram. |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/c/numeric/math/erf