code 35181;
procedure BESS YA01(A,X,YA,YA1);value A,X; real A,X,YA,YA1;
if A = 0 then
begin
BESS Y01(X,YA,YA1)
end else
begin real B,C,D,E,F,G,H,P,PI,Q,R,S;integer N,NA;
boolean REC,REV;
PI:=4*ARCTAN(1);NA:=ENTIER(A+.5);REC:=A>=.5;
REV:=A<-.5;if REV or REC then A:=A-NA;
if A=-.5 then
begin P:=SQRT(2/PI/X);F:=P*SIN(X);G:=-P*COS(X) end else
if X<3 then
begin
B:=X/2;D:=-LN(B);E:=A*D;
C:=if ABS(A)<"-8 then 1/PI else A/SIN(A*PI);
S:=if ABS(E)<"-8 then 1 else SINH(E)/E;
E:=EXP(E);G:=RECIP GAMMA(A,P,Q)*E;E:=(E+1/E)/2;
F:=2*C*(P*E+Q*S*D);E:=A*A;
P:=G*C;Q:=1/G/PI;C:=A*PI/2;
R:=if ABS(C)<"-8 then 1 else SIN(C)/C;R:=PI*C*R*R;
C:=1;D:=-B*B;YA:=F+R*Q;YA1:=P;
for N:=1,N+1 while
ABS(G/(1+ABS(YA)))+ABS(H/(1+ABS(YA1)))>"-15 do
begin F:=(F*N+P+Q)/(N*N-E);C:=C*D/N;
P:=P/(N-A);Q:=Q/(N+A);
G:=C*(F+R*Q);H:=C*P-N*G;
YA:=YA+G;YA1:=YA1+H;
end;
F:=-YA;G:=-YA1/B
end
else
begin
B:=X-PI*(A+.5)/2;C:=COS(B);S:=SIN(B);
D:=SQRT(2/X/PI);
BESS PQA01(A,X,P,Q,B,H);
F:=D*(P*S+Q*C);G:=D*(H*S-B*C)
end;
if REV then
begin X:=2/X;NA:=-NA-1;
for N:=0 step 1 until NA do
begin H:=X*(A-N)*F-G;G:=F;F:=H end
end else if REC then
begin X:=2/X;
for N:=1 step 1 until NA do
begin H:=X*(A+N)*G-F;F:=G;G:=H end
end;
YA:=F;YA1:=G
end BESS YA01;
eop