code 35194;
procedure NONEXP BESS KA01(A, X, KA, KA1); value A, X;
real A, X, KA, KA1;
if A = 0 then
begin
NONEXP BESS K01(X,KA,KA1)
end else
begin real F, G, H, PI; integer N, NA; boolean REC, REV;
PI:= 4 * ARCTAN(1);
REV:= A < -.5; if REV then A:= -A-1;
REC:= A >= .5; if REC then
begin NA:=ENTIER(A+.5); A:= A - NA end;
if A = -.5 then F:= G:= SQRT(PI / X / 2) else
if X < 1 then
real EXPON;
EXPON:= EXP(X); BESS KA01(A, X, KA, KA1);
F:= EXPON * KA; G:= EXPON * KA1
end else
begin real B, C, E, P, Q;
C:=.25-A*A;B:=X+X;G:=1;F:=0;E:=COS(A*PI)/PI*X*"15;
for N:=1,N+1 while H*N<E do
begin H:=(2*(N+X)*G-(N-1+C/N)*F)/(N+1);F:=G;
G:=H
end;
P:= Q:= F / G; E:= B - 2;
for N:=N,N-1 while N>0 do
begin P:=(N-1+C/N)/(E+(N+1)*(2-P));Q:=P*(1+Q) end;
F:=SQRT(PI/B)/(1+Q);G:=F*(A+X+.5-P)/X
end;
if REC then
begin X:= 2 / X;
for N:= 1 step 1 until NA do
begin H:= F + (A + N) * X * G; F:= G; G:= H end
end;
if REV then begin KA1:= F; KA:= G end else
begin KA:= F; KA1:= G end
end NONEXP BESS KA01;
eop