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