Directory of image this file is from
This file as a plain text file
C
C ..................................................................
C
C SUBROUTINE BESJ
C
C PURPOSE
C COMPUTE THE J BESSEL FUNCTION FOR A GIVEN ARGUMENT AND ORDER
C
C USAGE
C CALL BESJ(X,N,BJ,D,IER)
C
C DESCRIPTION OF PARAMETERS
C X -THE ARGUMENT OF THE J BESSEL FUNCTION DESIRED
C N -THE ORDER OF THE J BESSEL FUNCTION DESIRED
C BJ -THE RESULTANT J BESSEL FUNCTION
C D -REQUIRED ACCURACY
C IER-RESULTANT ERROR CODE WHERE
C IER=0 NO ERROR
C IER=1 N IS NEGATIVE
C IER=2 X IS NEGATIVE OR ZERO
C IER=3 REQUIRED ACCURACY NOT OBTAINED
C IER=4 RANGE OF N COMPARED TO X NOT CORRECT (SEE REMARKS)
C
C REMARKS
C N MUST BE GREATER THAN OR EQUAL TO ZERO, BUT IT MUST BE
C LESS THAN
C 20+10*X-X** 2/3 FOR X LESS THAN OR EQUAL TO 15
C 90+X/2 FOR X GREATER THAN 15
C
C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
C NONE
C
C METHOD
C RECURRENCE RELATION TECHNIQUE DESCRIBED BY H. GOLDSTEIN AND
C R.M. THALER,'RECURRENCE TECHNIQUES FOR THE CALCULATION OF
C BESSEL FUNCTIONS',M.T.A.C.,V.13,PP.102-108 AND I.A. STEGUN
C AND M. ABRAMOWITZ,'GENERATION OF BESSEL FUNCTIONS ON HIGH
C SPEED COMPUTERS',M.T.A.C.,V.11,1957,PP.255-257
C
C ..................................................................
C
SUBROUTINE BESJ(X,N,BJ,D,IER)
C
BJ=.0
IF(N)10,20,20
10 IER=1
RETURN
20 IF(X)30,30,31
30 IER=2
RETURN
31 IF(X-15.)32,32,34
32 NTEST=20.+10.*X-X** 2/3
GO TO 36
34 NTEST=90.+X/2.
36 IF(N-NTEST)40,38,38
38 IER=4
RETURN
40 IER=0
N1=N+1
BPREV=.0
C
C COMPUTE STARTING VALUE OF M
C
IF(X-5.)50,60,60
50 MA=X+6.
GO TO 70
60 MA=1.4*X+60./X
70 MB=N+IFIX(X)/4+2
MZERO=MAX0(MA,MB)
C
C SET UPPER LIMIT OF M
C
MMAX=NTEST
100 DO 190 M=MZERO,MMAX,3
C
C SET F(M),F(M-1)
C
FM1=1.0E-28
FM=.0
ALPHA=.0
IF(M-(M/2)*2)120,110,120
110 JT=-1
GO TO 130
120 JT=1
130 M2=M-2
DO 160 K=1,M2
MK=M-K
BMK=2.*FLOAT(MK)*FM1/X-FM
FM=FM1
FM1=BMK
IF(MK-N-1)150,140,150
140 BJ=BMK
150 JT=-JT
S=1+JT
160 ALPHA=ALPHA+BMK*S
BMK=2.*FM1/X-FM
IF(N)180,170,180
170 BJ=BMK
180 ALPHA=ALPHA+BMK
BJ=BJ/ALPHA
IF(ABS(BJ-BPREV)-ABS(D*BJ))200,200,190
190 BPREV=BJ
IER=3
200 RETURN
END