code 35150;
comment SPHERICAL BESSEL FUNCTIONS J[.5](X), , J[N+.5](X);
procedure SPHER 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 if N = 0 then
begin real X2;
if ABS(X) < .015 then
begin X2:= X * X / 6; J[0]:= 1 + X2 * (X2 * .3 - 1) end else
J[0]:= SIN(X)/X
end else
begin integer M; real R, S;
R:= 0; M:= START(X,N,0);
for M:= M step - 1 until 1 do
begin R:= 1 / ((M + M + 1) / X - R); if M <= N then J[M]:= R
end; if X < .015 then
begin S:= X * X / 6;
J[0]:= R:= S * (S * .3 - 1) + 1 end else
J[0]:= R:= SIN(X) / X;
for M:= 1 step 1 until N do J[M]:= R:= J[M] * R;
end SPHER BESS J;
eop