Evaluates a sequence of modified Bessel functions of the second kind with real order and complex arguments.
XNU Real
argument which is the lowest order desired. (Input)
XNU must be greater
than −1/2.
Z Complex argument for which the sequence of Bessel functions is to be evaluated. (Input)
N Number of elements in the sequence. (Input)
CBS Vector of
length N
containing the values of the function through the series. (Output)
CBS(I) contains the value
of the Bessel function of order XNU + I − 1 at Z for I = 1
to
N.
Generic: CALL CBKS (XNU, Z, N, CBS)
Specific: The specific interface names are S_CBKS and D_CBKS.
Single: CALL CBKS (XNU, Z, N, CBS)
Double: The double precision name is DCBKS.
The Bessel function Kν (z) is defined to be
where the Bessel function Jν(z) is defined in CBJS and Yν(z) is defined in CBYS.
This code is based on the code BESSCC of Barnett (1981) and Thompson and Barnett (1987).
For moderate or large arguments, z, Temmes (1975) algorithm is used to find Kν(z). This involves evaluating a continued fraction. If this evaluation fails to converge, the answer may not be accurate. For small z, a Neumann series is used to compute Kν(z). Upward recurrence of the Kν(z) is always stable.
1. Workspace may be explicitly provided, if desired, by use of C2KS/DC2KS. The reference is
CALL C2KS (XNU, Z, N, CBS, FK)
The additional argument is
FK Complex work vector of length N.
2. Informational errors
Type Code
3 1 One of the continued fractions failed.
4 2 Only the first several entries in CBS are valid.
In this example, K0.3 + v − 1(1.2 + 0.5i), ν = 1, , 4 is computed and printed.
USE UMACH_INT
USE CBKS_INT
IMPLICIT NONE
! Declare variables
INTEGER N
PARAMETER (N=4)
!
INTEGER K, NOUT
REAL XNU
COMPLEX CBS(N), Z
! Compute
XNU = 0.3
Z = (1.2, 0.5)
CALL CBKS (XNU, Z, N, CBS)
! Print the results
CALL UMACH (2, NOUT)
DO 10 K=1, N
WRITE (NOUT,99999) XNU+K-1, Z, CBS(K)
10 CONTINUE
99999 FORMAT (' K sub ', F6.3, ' ((', F6.3, ',', F6.3, &
')) = (', F9.3, ',', F9.3, ')')
END
K sub 0.300 (( 1.200, 0.500)) =
( 0.246, -0.200)
K sub 1.300 (( 1.200,
0.500)) = ( 0.336, -0.362)
K sub 2.300 ((
1.200, 0.500)) = ( 0.587, -1.126)
K sub
3.300 (( 1.200, 0.500)) = ( 0.719,
-4.839)
PHONE: 713.784.3131 FAX:713.781.9260 |