5 * Revision 1.1.1.1 1996/04/01 15:02:09 mclareni
10 #if !defined(CERNLIB_DOUBLE)
11 SUBROUTINE RBZEJY(A,N,MODE,REL,X)
13 #if defined(CERNLIB_DOUBLE)
14 SUBROUTINE DBZEJY(A,N,MODE,REL,X)
15 #include "gen/imp64.inc"
17 C Computes the first n positive (in the case Jo'(x) the first n
18 C non-negative) zeros of the Bessel functions
19 C Ja(x), Ya(x), Ja'(x), Ya'(x),
20 C where a >= 0 and ' = d/dx.
22 C Based on Algol procedures published in
24 C N.M. TEMME, An algorithm with Algol 60 program for the compu-
25 C tation of the zeros of ordinary Bessel functions and those of
26 C their derivatives, J. Comput. Phys. 32 (1979) 270-279, and
28 C N.M. TEMME, On the numerical evaluation of the ordinary Bessel
29 C function of the second kind, J. Comput. Phys. 21 (1976) 343-350.
31 DIMENSION X(*),FCO(4),ICO(4),H(13)
34 #if !defined(CERNLIB_DOUBLE)
35 PARAMETER (NAME = 'RBZEJY')
37 #if defined(CERNLIB_DOUBLE)
38 PARAMETER (NAME = 'RBZEJY/DBZEJY')
41 PARAMETER (Z1 = 1, Z2 = 2, Z5 = 5, Z6 = 6, Z7 = 7)
42 PARAMETER (C1 = Z5/48, C2 = -Z5/36, C3 = -Z7/48)
43 PARAMETER (C4 = 5*Z7/288, C5 = Z1/64, C6 = Z6/5, C7 = 3*Z6/7)
44 PARAMETER (E1 = Z1/3, E2 = Z2/3, HALF = Z1/2)
45 PARAMETER (PI = 3.14159 26535 89793 24D0)
46 PARAMETER (PIH = PI/2, PI1 = 3*PI/8)
48 DATA FCO /-2.33811,-1.17371,-1.01879,-2.29444/, ICO /1,3,3,1/
50 #if !defined(CERNLIB_DOUBLE)
51 ENTRY BZEJY(A,N,MODE,REL,X)
57 CALL MTLPRT(NAME,'C345.1',ERRTXT)
69 H(8)=HALF*(A-HALF*ICO(MODE))
70 H(9)=COS(A0*PI)/(PI*REL)
75 IF(A .GE. 3) H(13)=A**(-E2)
83 P1=PP*((1012*H(2)-14888)*H(2)+71476)/(15*P)
84 Q1=((664*H(2)-7856)*H(2)+30232)/(5*P)
95 P1=((((1012*H(2)+32816)*H(2)-55496)*H(2)-104400)*H(2)+
97 Q1=(((664*H(2)+16600)*H(2)-24312)*H(2)+28296)/(5*P)
106 IF(A .EQ. 0 .AND. MODE .EQ. 3) N0=2
112 X0=B-(PP-P1*C)/(8*B*(1-Q1*C))
117 X0=PI1*(4*L-ICO(MODE))
119 X0=-X0**E2*(1+V*(P2+Q2*V))
127 G0=G0*(1-G1*(210+G1*(G1+G1-27))/1575)
131 G0=PIH-G0*(1+G1*(2310+G1*(3003+G1*(4818+G1*
132 1 (8591+G1*16328))))/3465)
137 W=1/COS(G0-(1+G1)*(1+G/G2)*G)
140 X0=W*(A-P2*C*(1/U-C*(G+G-R2))/(A*U))
154 IF(R*(K**2) .GE. E) GO TO 9
170 D=((M-2)+H(12)/(M-1))/(R**2+S**2)
200 GO TO (11,12,13,14), MODE
201 11 R0=(PA*CX-QA*SX)/(PA1*SX+QA1*CX)
203 W=R0*(1+V*(1-4*AX))/(1+V*(4*(XX-H(2))-H(6)))
205 12 R0=(PA*SX+QA*CX)/(QA1*SX-PA1*CX)
207 W=R0*(1+V*(1-4*AX))/(1+V*(4*(XX-H(2))-H(6)))
209 13 R0=A/X0-(PA1*SX+QA1*CX)/(PA*CX-QA*SX)
211 14 R0=A/X0-(QA1*SX-PA1*CX)/(PA*SX+QA*CX)
212 15 V=E2*R0*X0*AX/(H(1)+XX)
214 W=-XX*R0*(1+V*(1-W*(H(3)-XX*(40*H(2)+48*XX))))/
215 1 (AX*(1+V*(1+W*(H(4)+XX*(64*H(2)+96*XX)))))
217 IF(ABS(W) .LE. REL*X0) GO TO 6
222 101 FORMAT('NEGATIVE INDEX A = ',1P,D15.8)