code 35023;
    procedure INVERSE ERROR FUNCTION(X, ONEMINX, INVERF);
    value X, ONEMINX; real X, ONEMINX, INVERF;
    begin real ABSX, P, BETAX;
        real array A[0 : 23];

        ABSX:= ABS(X);
        if ABSX > 0.8 and ONEMINX > 0.2 then ONEMINX:= 0;
        if ABSX <= 0.8 then 
        begin 
            A[ 0]:= 0.99288 53766 18941; A[ 1]:= 0.12046 75161 43104;
            A[ 2]:= 0.01607 81993 42100; A[ 3]:= 0.00268 67044 37162;
            A[ 4]:= 0.00049 96347 30236; A[ 5]:= 0.00009 88982 18599;
            A[ 6]:= 0.00002 03918 12764; A[ 7]:= 0.00000 43272 71618;
            A[ 8]:= 0.00000 09380 81413; A[ 9]:= 0.00000 02067 34720;
            A[10]:= 0.00000 00461 59699; A[11]:= 0.00000 00104 16680;
            A[12]:= 0.00000 00023 71501; A[13]:= 0.00000 00005 43928;
            A[14]:= 0.00000 00001 25549; A[15]:= 0.00000 00000 29138;
            A[16]:= 0.00000 00000 06795; A[17]:= 0.00000 00000 01591;
            A[18]:= 0.00000 00000 00374; A[19]:= 0.00000 00000 00088;
            A[20]:= 0.00000 00000 00021; A[21]:= 0.00000 00000 00005;
            INVERF:= CHEPOLSUM(21, X * X / 0.32 - 1, A) * X
        end else 
        if ONEMINX >= 25"-4 then 
            A[ 0]:=  0.91215 88034 17554; A[ 1]:= -0.01626 62818 67664;
            A[ 2]:=  0.00043 35564 72949; A[ 3]:=  0.00021 44385 70074;
            A[ 4]:=  0.00000 26257 51076; A[ 5]:= -0.00000 30210 91050;
            A[ 6]:= -0.00000 00124 06062; A[ 7]:=  0.00000 00624 06609;
            A[ 8]:= -0.00000 00005 40125; A[ 9]:= -0.00000 00014 23208;
            A[10]:=  0.00000 00000 34384; A[11]:=  0.00000 00000 33584;
            A[12]:= -0.00000 00000 01458; A[13]:= -0.00000 00000 00810;
            A[14]:=  0.00000 00000 00053; A[15]:=  0.00000 00000 00020;
            BETAX:= SQRT(- LN((1 + ABSX) * ONEMINX));
            P:= -1.54881 30423 7326 * BETAX + 2.56549 01231 4782;
            P:= CHEPOLSUM(15, P, A);
            INVERF:= if X < 0 then - BETAX * P else BETAX * P
        end else 
        if ONEMINX >= 5"-16 then 
        begin 
            A[ 0]:=  0.95667 97090 20493; A[ 1]:= -0.02310 70043 09065;
            A[ 2]:= -0.00437 42360 97508; A[ 3]:= -0.00057 65034 22651;
            A[ 4]:= -0.00001 09610 22307; A[ 5]:=  0.00002 51085 47025;
            A[ 6]:=  0.00001 05623 36068; A[ 7]:=  0.00000 27544 12330;
            A[ 8]:=  0.00000 04324 84498; A[ 9]:= -0.00000 00205 30337;
            A[10]:= -0.00000 00438 91537; A[11]:= -0.00000 00176 84010;
            A[12]:= -0.00000 00039 91289; A[13]:= -0.00000 00001 86932;
            A[14]:=  0.00000 00002 72923; A[15]:=  0.00000 00001 32817;
            A[16]:=  0.00000 00000 31834; A[17]:=  0.00000 00000 01670;
            A[18]:= -0.00000 00000 02036; A[19]:= -0.00000 00000 00965;
            A[20]:= -0.00000 00000 00220; A[21]:= -0.00000 00000 00010;
            A[22]:=  0.00000 00000 00014; A[23]:=  0.00000 00000 00006;
            BETAX:= SQRT(- LN((1 + ABSX) * ONEMINX));
            P:= -0.55945 76313 29832 * BETAX + 2.28791 57162 6336;
            P:= CHEPOLSUM(23, P, A);
            INVERF:= if X < 0 then - BETAX * P else BETAX * P
        end else if not UNDERFLOW(ONEMINX) then 
        begin 
            A[ 0]:=  0.98857 50640 66189; A[ 1]:=  0.01085 77051 84599;
            A[ 2]:= -0.00175 11651 02763; A[ 3]:=  0.00002 11969 93207;
            A[ 4]:=  0.00001 56648 71404; A[ 5]:= -0.00000 05190 41687;
            A[ 6]:= -0.00000 00371 35790; A[ 7]:=  0.00000 00012 17431;
            A[ 8]:= -0.00000 00001 76812; A[ 9]:= -0.00000 00000 11937;
            A[10]:=  0.00000 00000 00380; A[11]:= -0.00000 00000 00066;
            A[12]:= -0.00000 00000 00009;
            BETAX:= SQRT(- LN((1 + ABSX) * ONEMINX));
            P:= -9.19999 23588 3015 / SQRT(BETAX) + 2.79499 08201 2460;
            P:= CHEPOLSUM(12, P, A);
            INVERF:= if X < 0 then - BETAX * P else BETAX * P
        end else INVERF:= SIGN(X) * 26
    end INVERSE ERROR FUNCTION

        eop