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