code 35160;
    real procedure BESS J0(X); value X; real X;
    if X=0 then BESS J0:= 1 else 
    if ABS(X) <  8 then 
    begin real Z, Z2, AR, B0, B1, B2;
        X:= X/8; Z:= 2*X*X - 1; Z2:= Z + Z;
        B1:= B2:= 0;
        for AR:=-.75885"-15, +.4125321        "-13,
        -.194383469      "-11, +.7848696314     "-10,
        -.267925353056   "- 8, +.7608163592419  "- 7,
        -.176194690776215"- 5, +.324603288210051"- 4,
        -.46062616620628 "- 3, +.48191800694676 "- 2,
        -.34893769411409 "- 1, +.158067102332097    ,
        -.37009499387265 "- 0, +.265178613203337    ,
        -.872344235285222"- 2 do 
        begin B0:= Z2*B1-B2+AR;
          B2:= B1; B1:= B0
        end;
      BESS J0:= Z*B1 - B2 + .15772 79714 7489
    end else 
    begin real C, COSX, SINX, P0, Q0;
      X:= ABS(X); C:= .79788 45608 02865 / SQRT(X);
      COSX:= COS(X-.70685 83470 57703" 1);
      SINX:= SIN(X-.70685 83470 57703" 1);
      BESS PQ0(X, P0, Q0);
      BESSJ0:= C * (P0 * COSX - Q0 * SINX)
    end BESS J0

        eop