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