code 35028;
    procedure FG(X, F, G); value X; real X, F, G;
    begin real ABSX, C, S, C1, S1, A, XINV, X3INV, C4, P, Q;

        ABSX:= ABS(X);
        if ABSX <= 1.6 then 
        begin FRESNEL(X, C, S);
            A:= X * X * 1.57079 63267 9490; C1:= COS(A); S1:= SIN(A);
            A:= if X < 0 then -0.5 else 0.5;
            P:= A - C; Q:= A - S;
            F:= Q * C1 - P * S1;
            G:= P * C1 + Q * S1
        end else 
        if ABSX <= 1.9 then 
        begin XINV:= 1 / X; A:= XINV * XINV;
            X3INV:= A * XINV; C4:= A * A;
            P:= (((1.35304 23554 0388"+1  * C4 + 6.98534 26160 1021"+1)
            * C4 + 4.80340 65557 7925"+1) * C4 + 8.03588 12280 3942"+0)
            * C4 + 3.18309 26850 4906"-1;
            Q:= (((6.55630 64008 3916"+1  * C4 + 2.49561 99380 5172"+2)
            * C4 + 1.57611 00558 0123"+2) * C4 + 2.55491 61843 5795"+1)
            * C4 + 1;
            F:= XINV * P / Q;
            P:=((((2.05421 43249 8501"+1  * C4 + 1.96232 03797 1663"+2)
            * C4 + 1.99182 81867 8903"+2) * C4 + 5.31122 81348 0989"+1)
            * C4 + 4.44533 82755 0512"+0) * C4 + 1.01320 61881 0275"-1;
            Q:=((((1.01379 48339 6003"+3  * C4 + 3.48112 14785 6545"+3)
            * C4 + 2.54473 13318 1822"+3) * C4 + 5.83590 57571 6429"+2)
            * C4 + 4.53925 01967 3689"+1) * C4 + 1;
            G:= X3INV * P / Q
        end else 
        if ABSX <= 2.4 then 
        begin XINV:= 1 / X; A:= XINV * XINV;
            X3INV:= A * XINV; C4:= A * A;
            P:=((((7.17703 24936 5140"+2  * C4 + 3.09145 16157 4430"+3)
            * C4 + 1.93007 64078 6716"+3) * C4 + 3.39837 13492 6984"+2)
            * C4 + 1.95883 94102 1969"+1) * C4 + 3.18309 88182 2017"-1;
            Q:=((((3.36121 69918 0551"+3  * C4 + 1.09334 24898 8809"+4)
            * C4 + 6.33747 15585 1144"+3) * C4 + 1.08535 06750 0650"+3)
            * C4 + 6.18427 13817 2887"+1) * C4 + 1;
            F:= XINV * P / Q;
            P:=((((3.13330 16306 8756"+2  * C4 + 1.59268 00608 5354"+3)
            * C4 + 9.08311 74952 9594"+2) * C4 + 1.40959 61791 1316"+2)
            * C4 + 7.11205 00178 9783"+0) * C4 + 1.01321 16176 1805"-1;
            Q:=((((1.15149 83237 6261"+4  * C4 + 2.41315 56721 3370"+4)
            * C4 + 1.06729 67803 0581"+4) * C4 + 1.49051 92279 7329"+3)
            * C4 + 7.17128 59693 9302"+1) * C4 + 1;
            G:= X3INV * P / Q
        end else 
        begin XINV:= 1 / X; A:= XINV * XINV;
            X3INV:= A * XINV; C4:= A * A;
            P:=((((2.61294 75322 5142"+4  * C4 + 6.13547 11361 4700"+4)
            * C4 + 1.34922 02817 1857"+4) * C4 + 8.16343 40178 4375"+2)
            * C4 + 1.64797 71284 1246"+1) * C4 + 9.67546 03296 7090"-2;
            Q:=((((1.37012 36481 7226"+6  * C4 + 1.00105 47890 0791"+6)
            * C4 + 1.65946 46262 1853"+5) * C4 + 9.01827 59623 1524"+3)
            * C4 + 1.73871 69067 3649"+2) * C4 + 1;
            F:= (C4 * (-P) / Q + 0.31830 98861 83791) * XINV;
           P:=(((((1.72590 22465 4837"+6  * C4 + 6.66907 06166 8636"+6)
            * C4 + 1.77758 95083 8030"+6) * C4 + 1.35678 86781 3756"+5)
            * C4 + 3.87754 14174 6378"+3) * C4 + 4.31710 15782 3358"+1)
            * C4 + 1.53989 73381 9769"-1;
           Q:=(((((1.40622 44112 3580"+8  * C4 + 9.38695 86253 1635"+7)
            * C4 + 1.62095 60050 0232"+7) * C4 + 1.02878 69305 6688"+6)
            * C4 + 2.69183 18039 6243"+4) * C4 + 2.86733 19497 5899"+2)
            * C4 + 1;
            G:= (C4 * (-P) / Q + 0.10132 11836 42338) * X3INV
        end 
    end FG;
        eop