1      DOUBLE PRECISION FUNCTION DBESJ0 (X)
2c Copyright (c) 1996 California Institute of Technology, Pasadena, CA.
3c ALL RIGHTS RESERVED.
4c Based on Government Sponsored Research NAS7-03001.
5c>> 1996-03-30 DBESJ0 Krogh  Added external statement.
6C>> 1995-11-10 DBESJ0 Krogh  Changed data statment for C converstion.
7C>> 1995-11-03 DBESJ0 Krogh  Removed blanks in numbers for C conversion.
8C>> 1994-11-11 DBESJ0 Krogh   Declared all vars.
9C>> 1994-10-20 DBESJ0 Krogh  Changes to use M77CON
10C>> 1990-11-29 DBESJ0 CLL
11C>> 1985-08-02 DBESJ0 Lawson  Initial code.
12C JULY 1977 EDITION.  W. FULLERTON, C3, LOS ALAMOS SCIENTIFIC LAB.
13C C.L.LAWSON & S.CHAN, JPL, 1984 FEB ADAPTED TO JPL MATH77 LIBRARY.
14c     ------------------------------------------------------------------
15c--D replaces "?": ?BESJ0, ?BMP0, ?INITS, ?CSEVL
16c     ------------------------------------------------------------------
17      EXTERNAL D1MACH, DCSEVL
18      INTEGER NTJ0
19      DOUBLE PRECISION X, BJ0CS(19), AMPL, THETA, XSML, Y,
20     1  D1MACH, DCSEVL
21C
22C SERIES FOR BJ0        ON THE INTERVAL  0.          TO  1.60000D+01
23C                                        WITH WEIGHTED ERROR   4.39D-32
24C                                         LOG WEIGHTED ERROR  31.36
25C                               SIGNIFICANT FIGURES REQUIRED  31.21
26C                                    DECIMAL PLACES REQUIRED  32.00
27C
28      SAVE NTJ0, XSML
29C
30      DATA BJ0CS / +.10025416196893913701073127264074D+0,
31     *  -.66522300776440513177678757831124D+0,
32     *  +.24898370349828131370460468726680D+0,
33     *  -.33252723170035769653884341503854D-1,
34     *  +.23114179304694015462904924117729D-2,
35     *  -.99112774199508092339048519336549D-4,
36     *  +.28916708643998808884733903747078D-5,
37     *  -.61210858663032635057818407481516D-7,
38     *  +.98386507938567841324768748636415D-9,
39     *  -.12423551597301765145515897006836D-10,
40     *  +.12654336302559045797915827210363D-12,
41     *  -.10619456495287244546914817512959D-14,
42     *  +.74706210758024567437098915584000D-17,
43     *  -.44697032274412780547627007999999D-19,
44     *  +.23024281584337436200523093333333D-21,
45     *  -.10319144794166698148522666666666D-23,
46     *  +.40608178274873322700800000000000D-26,
47     *  -.14143836005240913919999999999999D-28,
48     *  +.43910905496698880000000000000000D-31 /
49C
50      DATA NTJ0, XSML / 0, 0.D0 /
51C     ------------------------------------------------------------------
52      IF (NTJ0.NE.0) GO TO 10
53      call DINITS (BJ0CS, 19, 0.1D0*D1MACH(3), NTJ0)
54      XSML = SQRT (4.0D0*D1MACH(3))
55C
56 10   Y = ABS(X)
57C
58      IF (Y .LE. XSML) THEN
59        DBESJ0 = 1.D0
60      ELSE IF (Y .LE. 4.D0) THEN
61        DBESJ0 = DCSEVL (.125D0*Y*Y-1.D0, BJ0CS, NTJ0)
62      ELSE
63        CALL DBMP0 (Y, AMPL, THETA)
64        DBESJ0 = AMPL * COS(THETA)
65      END IF
66C
67      RETURN
68      END
69