code 35162;
procedure BESS J(X, N, J); value X, N;
real X; integer N; array J;
if X=0 then
begin J[0]:= 1;
for N:= N step -1 until 1 do J[N]:= 0
end
else
begin real X2, R, S; integer L, M, NU, SIGNX;
SIGNX:= SIGN(X); X:= ABS(X);
R:= S:= 0; X2:= 2/X; L:= 0; NU:= START(X,N,0);
for M:= NU step -1 until 1 do
begin R:= 1/(X2*M-R);
L:= 2-L; S:= R*(L+S);
if M<=N then J[M]:= R
end;
J[0]:= R:= 1/(1+S);
for M:= 1 step 1 until N do
J[M]:= R:= R*J[M];
if SIGNX < 0 then
for M:= 1 step 2 until N do
J[M]:= -J[M];
end BESSELJ;
eop