code 35022;
real procedure NONEXPERFC(X); value X; real X;
begin real ABSX, ERF, ERFC, C, P, Q;
ABSX:= ABS(X);
if ABSX <= 0.5 then
begin ERRORFUNCTION(X, ERF, ERFC);
NONEXPERFC:= EXP(X * X) * ERFC
end else
if ABSX < 4 then
begin C:= ABSX; P:= ((((((-0.13686 48573 82717"-6 * C +
0.56419 55174 78974"+0) * C + 0.72117 58250 88309"+1) * C +
0.43162 22722 20567"+2) * C + 0.15298 92850 46940"+3) * C +
0.33932 08167 34344"+3) * C + 0.45191 89537 11873"+3) * C +
0.30045 92610 20162"+3;
Q:= ((((((C +
0.12782 72731 96294"+2) * C + 0.77000 15293 52295"+2) * C +
0.27758 54447 43988"+3) * C + 0.63898 02644 65631"+3) * C +
0.93135 40948 50610"+3) * C + 0.79095 09253 27898"+3) * C +
0.30045 92609 56983"+3;
NONEXPERFC:= if X > 0 then P / Q else
EXP(X * X) * 2 - P / Q
end else
begin C:= 1 / X / X; P:= (((0.22319 24597 34185"-1 * C +
0.27866 13086 09648"-0) * C + 0.22695 65935 39687"-0) * C +
0.49473 09106 23251"-1) * C + 0.29961 07077 03542"-2;
Q:= (((C +
0.19873 32018 17135"+1) * C + 0.10516 75107 06793"+1) * C +
0.19130 89261 07830"+0) * C + 0.10620 92305 28468"-1;
C:= (C * (-P) / Q + 0.56418 95835 47756) / ABSX;
NONEXPERFC:= if X > 0 then C else EXP(X * X) * 2 - C
end
end NONEXPERFC;
eop