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