code 35178;
procedure NONEXP BESS K01(X, K0, K1);value X;real X, K0, K1;
if X <= 1.5 then
begin real EXPX;
EXPX:= EXP(X); BESS K01(X, K0, K1); K0:= K0 * EXPX;
K1:= EXPX * K1
end else if X <= 5 then
begin integer R; real T2, FAC, S1, S2, TERM1, TERM2,
SQRTEXPR, EXPH2, X2;
S1:= .5; S2:=0; R:= 0; X2:= X + X;
EXPH2:= 1 / SQRT(5 * X);
for FAC:= .90483741803596,
.67032004603564, .40656965974060, .20189651799466,
.82084998623899"-1, .27323722447293"-1, .74465830709243"-2,
.16615572731739"-2, .30353913807887"-3, .45399929762485"-4,
.55595132416500"-5, .55739036926944"-6, .45753387694459"-7,
.307487987958650"-8, .16918979226151"-9, .76218651945127"-11,
.28111852987891"-12, .84890440338729"-14, .2098791048793"-15,
.42483542552916"-17 do
begin R:= R + 1; T2:= R * R / 10;
SQRTEXPR:= SQRT(T2 / X2 + 1);
TERM1:= FAC / SQRTEXPR; TERM2:= FAC * SQRTEXPR * T2;
S1:= S1 + TERM1; S2:= S2 + TERM2
end;
K0:= EXPH2 * S1; K1:= EXPH2 * S2 * 2
end else
begin integer R;
real BR, BR1, BR2, CR, CR1, CR2, DR, ERMIN1, ERPLUS1, ER,
F0, F1, EXPX, Y, Y2;
Y:= 10 / X - 1; Y2:= Y + Y; R:= 30;
BR1:= BR2:= CR1:= CR2:= ERPLUS1:= ER:= 0;
for DR:= .27545" - 15, -.172697" - 14, .1136042 " - 13,
-.7883236 " -13, .58081063 " -12,
-.457993622 " -11, .3904375576 " -10,
-.36454717921 " - 9, .379299645568 " - 8,
-.450473376411 " - 7, .63257510850049 " - 6,
-.11106685196665" - 4, .26953261276272 " - 3,
-.11310504646928" - 1 do
begin R:= R - 2; BR:= Y2 * BR1 - BR2 + DR;
CR:= CR1 * Y2 - CR2 + ER;
ERMIN1:= R * DR + ERPLUS1; ERPLUS1:= ER; ER:= ERMIN1;
BR2:= BR1; BR1:= BR; CR2:= CR1; CR1:= CR
end;
F0:= Y * BR1 - BR2 + .9884081742308258;
F1:= Y * CR1 - CR2 + ER / 2;
EXPX:= SQRT(1.5707963267949 / X); K0:= F0:= F0 * EXPX;
K1:= (1 + .5 / X) * F0 + (10 / X / X) * EXPX * F1
end K0;
eop