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