using System; using static System.Console; using static System.Math; public class main{ static int nx=0; static double acc=1e-10; static double eps=0; public static double erf(double z){ if(z<0)return -erf(-z); Func f = x => {nx++; return Exp(-x*x);}; double q; if(z<1.25) { q= 2/Sqrt(PI)*integrate.quad(f,0,z,acc:acc,eps:eps); } else { Func F = t => f(z+(1-t)/t)/t/t; q= 1-2/Sqrt(PI)*integrate.quad(F,0,1,acc:acc,eps:eps); } Error.WriteLine($"z={z:f6} npoints={nx}"); nx=0; return q; } public static void Main(){ for(double z=-3; z<=3; z+=1.0/8) Console.WriteLine($"{z} {erf(z)}"); WriteLine("\n"); WriteLine("-2 -0.995322265"); WriteLine("-1 -0.842700793"); WriteLine("-0.5 -0.520499878"); WriteLine("-0.2 -0.222702589"); WriteLine(" 0.2 0.222702589"); WriteLine(" 0.5 0.520499878"); WriteLine(" 1 0.842700793"); WriteLine(" 2 0.995322265"); } }//main