注意: IVF 扩展了 erf 和 erfc 函数,可直接使用。与本代码结果一致。
函数修改自 Numerical Recipes
输出图形如图:
完整代码如下:
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