c语言 误差函数erf代码,高斯(余补)误差函数erf和erfc

注意: IVF 扩展了 erf 和 erfc 函数,可直接使用。与本代码结果一致。

函数修改自 Numerical Recipes

输出图形如图:

ca590e459913eb92a09e3ff56a472b07.gif

完整代码如下:

Module Gauss_Err_Func

Implicit None

Private gammq , gammp , gser , gcf , gammln

contains

Real FUNCTION fc_erf(x)

REAL x

if(x < 0.0)then

fc_erf=-gammp(.5,x**2)

else

fc_erf=gammp(.5,x**2)

endif

END FUNCTION fc_erf

Real FUNCTION fc_erfc(x)

REAL x

if(x < 0.)then

fc_erfc=1.+gammp(.5,x**2)

else

fc_erfc=gammq(.5,x**2)

endif

END FUNCTION fc_erfc

Real FUNCTION gammq(a,x)

REAL a,x

REAL gammcf,gamser,gln

if(x<0.0 .or. a<=0.0) return

if(x

call gser(gamser,a,x,gln)

gammq=1.-gamser

else

call gcf(gammcf,a,x,gln)

gammq=gammcf

endif

End Function gammq

Real Function gammp(a,x)

REAL a,x

REAL gammcf,gamser,gln

if(x<0..or.a<=0.) return !'bad arguments in gammp'

if(x