code 35080;
real procedure EI(X);value X;real X;
begin real array P,Q[0:7];

    if X>24 then 
    begin P[0]:= +1.00000000000058   ;Q[1]:= 1.99999999924131   ;
            P[1]:=X-3.00000016782085   ;Q[2]:=-2.99996432944446   ;
            P[2]:=X-5.00140345515924   ;Q[3]:=-7.90404992298926   ;
            P[3]:=X-7.49289167792884   ;Q[4]:=-4.31325836146628   ;
            P[4]:=X-3.08336269051763"+1;Q[5]:= 2.95999399486831"+2;
            P[5]:=X-1.39381360364405   ;Q[6]:=-6.74704580465832   ;
            P[6]:=X+8.91263822573708   ;Q[7]:= 1.04745362652468"+3;
            P[7]:=X-5.31686623494482"+1;
       EI:=EXP(X)*(1+JFRAC(7,Q,P)/X)/X
    end else if X>12 then 
    begin P[0]:= +9.99994296074708"-1;Q[1]:= 1.00083867402639   ;
            P[1]:=X-1.95022321289660   ;Q[2]:=-3.43942266899870   ;
            P[2]:=X+1.75656315469614   ;Q[3]:= 2.89516727925135"+1;
            P[3]:=X+1.79601688769252"+1;Q[4]:= 7.60761148007735"+2;
            P[4]:=X-3.23467330305403"+1;Q[5]:= 2.57776384238440"+1;
            P[5]:=X-8.28561994140641   ;Q[6]:= 5.72837193837324"+1;
            P[6]:=X-1.86545454883399"+1;Q[7]:= 6.95000655887434"+1;
            P[7]:=X-3.48334653602853   ;
       EI:=EXP(X)*JFRAC(7,Q,P)/X
    end else if X>6 then 
    begin P[0]:= +1.00443109228078   ;Q[1]:= 5.27468851962908"-1;
            P[1]:=X-4.32531132878135"+1;Q[2]:= 2.73624119889328"+3;
            P[2]:=X+6.01217990830080"+1;Q[3]:= 1.43256738121938"+1;
            P[3]:=X-3.31842531997221"+1;Q[4]:= 1.00367439516726"+3;
            P[4]:=X+2.50762811293560"+1;Q[5]:=-6.25041161671876   ;
            P[5]:=X+9.30816385662165   ;Q[6]:= 3.00892648372915"+2;
            P[6]:=X-2.19010233854880"+1;Q[7]:= 3.93707701852715  ;
            P[7]:=X-2.18086381520724   ;
       EI:=EXP(X)*JFRAC(7,Q,P)/X
    end else if X>0 then 
    begin real T,R,X0,XMX0;
            P[0]:=-1.95773036904548"+8;Q[0]:=-8.26271498626055"+7;
            P[1]:= 3.89280421311201"+6;Q[1]:= 8.91925767575612"+7;
            P[2]:=-2.21744627758845"+7;Q[2]:=-2.49033375740540"+7;
            P[3]:=-1.19623669349247"+5;Q[3]:= 4.28559624611749"+6;
            P[4]:=-2.49301393458648"+5;Q[4]:=-4.83547436162164"+5;
            P[5]:=-4.21001615357070"+3;Q[5]:= 3.57300298058508"+4;
            P[6]:=-5.49142265521085"+2;Q[6]:=-1.60708926587221"+3;
            P[7]:=-8.66937339951070   ;Q[7]:= 3.41718750000000"+1;
       X0:=.372507410781367;
       T:=X/3-1;
       R:=CHEPOLSUM(7,T,P)/CHEPOLSUM(7,T,Q);
       XMX0:=(X-409576229586/1099511627776)-.767177250199394"-12;
       if ABS(XMX0)>.037 then T:=LN(X/X0) else 
       begin real Z,Z2;
            P[0]:= .837207933976075"+1;Q[0]:= .418603966988037"+1;
            P[1]:=-.652268740837103"+1;Q[1]:=-.465669026080814"+1;
            P[2]:= .569955700306720   ;Q[2]:= .1"+1;
           Z:=XMX0/(X+X0);Z2:=Z*Z;
           T:=Z*POL(2,Z2,P)/POL(2,Z2,Q)
       end;
       EI:=T+XMX0*R
    end else 
    if X>-1 then 
    begin real Y;
            P[0]:=-4.41785471728217"+4;Q[0]:= 7.65373323337614"+4;
            P[1]:= 5.77217247139444"+4;Q[1]:= 3.25971881290275"+4;
            P[2]:= 9.93831388962037"+3;Q[2]:= 6.10610794245759"+3;
            P[3]:= 1.84211088668000"+3;Q[3]:= 6.35419418378382"+2;
            P[4]:= 1.01093806161906"+2;Q[4]:= 3.72298352833327"+1;
            P[5]:= 5.03416184097568   ;Q[5]:= 1;
       Y:=-X;
       EI:=LN(Y)-POL(5,Y,P)/POL(5,Y,Q)
    end else if X>-4 then 
    begin real Y;
            P[0]:= 8.67745954838444"-8;Q[0]:= 1;
            P[1]:= 9.99995519301390"-1;Q[1]:= 1.28481935379157"+1;
            P[2]:= 1.18483105554946"+1;Q[2]:= 5.64433569561803"+1;
            P[3]:= 4.55930644253390"+1;Q[3]:= 1.06645183769914"+2;
            P[4]:= 6.99279451291003"+1;Q[4]:= 8.97311097125290"+1;
            P[5]:= 4.25202034768841"+1;Q[5]:= 3.14971849170441"+1;
            P[6]:= 8.83671808803844   ;Q[6]:= 3.79559003762122   ;
            P[7]:= 4.01377664940665"-1;Q[7]:= 9.08804569188869"-2;
       Y:=-1/X;
       EI:=-EXP(X)*POL(7,Y,P)/POL(7,Y,Q)
    end else 
    begin real Y;
            P[0]:=-9.99999999998447"-1;Q[0]:= 1;
            P[1]:=-2.66271060431811"+1;Q[1]:= 2.86271060422192"+1;
            P[2]:=-2.41055827097015"+2;Q[2]:= 2.92310039388533"+2;
            P[3]:=-8.95927957772937"+2;Q[3]:= 1.33278537748257"+3;
            P[4]:=-1.29885688746484"+3;Q[4]:= 2.77761949509163"+3;
            P[5]:=-5.45374158883133"+2;Q[5]:= 2.40401713225909"+3;
            P[6]:=-5.66575206533869   ;Q[6]:= 6.31657483280800"+2;
       Y:=-1/X;
       EI:=-EXP(X)*Y*(1+Y*POL(6,Y,P)/POL(6,Y,Q))
    end 
end EI

        eop