Directory of image this file is from
This file as a plain text file
C
C ..................................................................
C
C SUBROUTINE BESK
C
C COMPUTE THE K BESSEL FUNCTION FOR A GIVEN ARGUMENT AND ORDER
C
C USAGE
C CALL BESK(X,N,BK,IER)
C
C DESCRIPTION OF PARAMETERS
C X -THE ARGUMENT OF THE K BESSEL FUNCTION DESIRED
C N -THE ORDER OF THE K BESSEL FUNCTION DESIRED
C BK -THE RESULTANT K BESSEL FUNCTION
C IER-RESULTANT ERROR CODE WHERE
C IER=0 NO ERROR
C IER=1 N IS NEGATIVE
C IER=2 X IS ZERO OR NEGATIVE
C IER=3 X .GT. 170, MACHINE RANGE EXCEEDED
C IER=4 BK .GT. 10**70
C
C REMARKS
C N MUST BE GREATER THAN OR EQUAL TO ZERO
C
C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
C NONE
C
C METHOD
C COMPUTES ZERO ORDER AND FIRST ORDER BESSEL FUNCTIONS USING
C SERIES APPROXIMATIONS AND THEN COMPUTES N TH ORDER FUNCTION
C USING RECURRENCE RELATION.
C RECURRENCE RELATION AND POLYNOMIAL APPROXIMATION TECHNIQUE
C AS DESCRIBED BY A.J.M.HITCHCOCK,'POLYNOMIAL APPROXIMATIONS
C TO BESSEL FUNCTIONS OF ORDER ZERO AND ONE AND TO RELATED
C FUNCTIONS', M.T.A.C., V.11,1957,PP.86-88, AND G.N. WATSON,
C 'A TREATISE ON THE THEORY OF BESSEL FUNCTIONS', CAMBRIDGE
C UNIVERSITY PRESS, 1958, P. 62
C
C ..................................................................
C
SUBROUTINE BESK(X,N,BK,IER)
DIMENSION T(12)
BK=.0
IF(N)10,11,11
10 IER=1
RETURN
11 IF(X)12,12,20
12 IER=2
RETURN
20 IF(X-170.0)22,22,21
21 IER=3
RETURN
22 IER=0
IF(X-1.)36,36,25
25 A=EXP(-X)
B=1./X
C=SQRT(B)
T(1)=B
DO 26 L=2,12
26 T(L)=T(L-1)*B
IF(N-1)27,29,27
C
C COMPUTE KO USING POLYNOMIAL APPROXIMATION
C
27 G0=A*(1.2533141-.1566642*T(1)+.08811128*T(2)-.09139095*T(3)
2+.1344596*T(4)-.2299850*T(5)+.3792410*T(6)-.5247277*T(7)
3+.5575368*T(8)-.4262633*T(9)+.2184518*T(10)-.06680977*T(11)
4+.009189383*T(12))*C
IF(N)20,28,29
28 BK=G0
RETURN
C
C COMPUTE K1 USING POLYNOMIAL APPROXIMATION
C
29 G1=A*(1.2533141+.4699927*T(1)-.1468583*T(2)+.1280427*T(3)
2-.1736432*T(4)+.2847618*T(5)-.4594342*T(6)+.6283381*T(7)
3-.6632295*T(8)+.5050239*T(9)-.2581304*T(10)+.07880001*T(11)
4-.01082418*T(12))*C
IF(N-1)20,30,31
30 BK=G1
RETURN
C
C FROM KO,K1 COMPUTE KN USING RECURRENCE RELATION
C
31 DO 35 J=2,N
GJ=2.*(FLOAT(J)-1.)*G1/X+G0
IF(GJ-1.7E33)33,33,32
32 IER=4
GO TO 34
33 G0=G1
35 G1=GJ
34 BK=GJ
RETURN
36 B=X/2.
A=.5772157+ALOG(B)
C=B*B
IF(N-1)37,43,37
C
C COMPUTE KO USING SERIES EXPANSION
C
37 G0=-A
X2J=1.
FACT=1.
HJ=.0
DO 40 J=1,6
RJ=1./FLOAT(J)
X2J=X2J*C
FACT=FACT*RJ*RJ
HJ=HJ+RJ
40 G0=G0+X2J*FACT*(HJ-A)
IF(N)43,42,43
42 BK=G0
RETURN
C
C COMPUTE K1 USING SERIES EXPANSION
C
43 X2J=B
FACT=1.
HJ=1.
G1=1./X+X2J*(.5+A-HJ)
DO 50 J=2,8
X2J=X2J*C
RJ=1./FLOAT(J)
FACT=FACT*RJ*RJ
HJ=HJ+RJ
50 G1=G1+X2J*FACT*(.5+(A-HJ)*FLOAT(J))
IF(N-1)31,52,31
52 BK=G1
RETURN
END