BSKES
Evaluates a sequence of exponentially scaled modified Bessel functions of the second kind of fractional order.
Required Arguments
XNU — Fractional order of the function. (Input)
XNU must be less than 1.0 in absolute value.
X — Argument for which the sequence of Bessel functions is to be evaluated. (Input)
NIN — Number of elements in the sequence. (Input)
BKE — Vector of length NIN containing the values of the function through the series. (Output)
FORTRAN 90 Interface
Generic: CALL BSKES (XNU, X, NIN, BKE)
Specific: The specific interface names are S_BSKES and D_BSKES.
FORTRAN 77 Interface
Single: CALL BSKES (XNU, X, NIN, BKE)
Double: The double precision name is DBSKES.
Description
Function BSKES evaluates exKv+k1(x), for k = 1, , n. For the definition of Kv(x), see BSKS.
Currently, v is restricted to be less than 1 in absolute value. A total of n values is stored in the array BKE. For n positive, BKE(1) contains exKv(x), BKE(2) contains exKv+1(x), , and BKE(N) contains exKv+ n1(x). For n negative, BKE(1) contains exKv(x), BKE(2) contains exKv1(x), , and BKE(n) contains exKv+n+1(x). This routine is particularly useful for calculating sequences for large x provided n  x. (Overflow becomes a problem if n << x.) n must not be zero, and x must not be greater than zero. Moreover, v must be less than 1. Also, when n is large compared with x, v+n must not be so large that overflows.
BSKES is based on the work of Cody (1983).
Comments
1. If NIN is positive, BKE(1) contains EXP(X) times the value of the function of order XNU, BKE(2) contains EXP(X) times the value of the function of order XNU + 1, , and BKE(NIN) contains EXP(X) times the value of the function of order XNU + NIN  1.
2. If NIN is negative, BKE(1) contains EXP(X) times the value of the function of order XNU, BKE(2) contains EXP(X) times the value of the function of order XNU  1, , and BKE(ABS(NIN)) contains EXP(X) times the value of the function of order XNU + NIN + 1.
Example
In this example, Kv1/2(2.0), v= 1, , 6 is computed and printed.
 
USE BSKES_INT
USE UMACH_INT
 
IMPLICIT NONE
! Declare variables
INTEGER NIN
PARAMETER (NIN=6)
!
INTEGER K, NOUT
REAL BKE(NIN), X, XNU
! Compute
XNU = 0.5
X = 2.0
CALL BSKES (XNU, X, NIN, BKE)
! Print the results
CALL UMACH (2, NOUT)
DO 10 K=1, NIN
WRITE (NOUT,99999) X, XNU+K-1, X, BKE(K)
10 CONTINUE
99999 FORMAT (' exp(', F6.3, ') * K sub ', F6.3, &
' (', F6.3, ') = ', F8.3)
END
Output
 
exp( 2.000) * K sub 0.500 ( 2.000) = 0.886
exp( 2.000) * K sub 1.500 ( 2.000) = 1.329
exp( 2.000) * K sub 2.500 ( 2.000) = 2.880
exp( 2.000) * K sub 3.500 ( 2.000) = 8.530
exp( 2.000) * K sub 4.500 ( 2.000) = 32.735
exp( 2.000) * K sub 5.500 ( 2.000) = 155.837
Published date: 03/19/2020
Last modified date: 03/19/2020