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