erf, erff, erfl

< c‎ | numeric‎ | math
 
 
 
常用数学函数
函数
基本运算
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)(C99)(C99)
指数函数
(C99)
(C99)
(C99)
(C99)
幂函数
(C99)
(C99)
三角及双曲函数
(C99)
(C99)
(C99)
误差及伽马函数
erf
(C99)
(C99)
(C99)
(C99)
临近整数的浮点运算
(C99)(C99)(C99)
(C99)
(C99)(C99)(C99)
浮点数操作函数
(C99)(C99)
(C99)
(C99)
分类
(C99)
(C99)
(C99)
类型
(C99)(C99)
宏常量
 
定义于头文件 <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 起)
1-3) 计算 arg误差函数
4) 泛型宏:若 arg 拥有 long double 类型,则调用 erfl 。否则若 arg 拥有整数类型或 double 类型,则调用 erf 。否则调用 erff

参数

arg - 浮点值

返回值

若不出现错误,则返回 arg 的误差函数的值,即
2
π
arg
0
e-t2
dt
。 若因下溢出现值域错误,则返回(舍入后的)正确结果,即
2*arg
π

错误处理

报告 math_errhandling 中指定的错误。

若实现支持 IEEE 浮点算术( IEC 60559 ),则

  • 若参数为 ±0 ,则返回 ±0
  • 若参数为 ±∞ ,则返回 ±1
  • 若参数为 NaN ,则返回 NaN

注解

|arg| < DBL_MIN*(sqrt(π)/2) 则保证下溢。

erf(
x
σ2
)
是测量结果小于与平均数相差 x 的值的概率,其误差服从标准差为 σ 的正态分布。

示例

#include <stdio.h>
#include <math.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 standard (ISO/IEC 9899:2011):
  • 7.12.8.1 The erf functions (p: 249)
  • 7.25 Type-generic math <tgmath.h> (p: 373-375)
  • F.10.5.1 The erf functions (p: 525)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.12.8.1 The erf functions (p: 230)
  • 7.22 Type-generic math <tgmath.h> (p: 335-337)
  • F.9.5.1 The erf functions (p: 462)

参阅

(C99)(C99)(C99)
计算补误差函数
(函数)

外部链接

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