Evaluates a sequence of modified Bessel functions of the first kind with real order and real positive arguments.
XNU — Real
argument which is the lowest order desired. (Input)
It must be
greater than or equal to zero and less than one.
X — Real argument for which the sequence of Bessel functions is to be evaluated. (Input)
N — Number of elements in the sequence. (Input)
BSI — Vector of
length N
containing the values of the function through the series. (Output)
BSI(I) contains the value
of the Bessel function of order I − 1 + XNU at x for
I = 1 to N.
Generic: CALL BSIS (XNU, X, N, BSI)
Specific: The specific interface names are S_BSIS and D_BSIS.
Single: CALL BSIS (XNU, X, N, BSI)
Double: The double precision name is DBSIS.
The Bessel function Iv(x) is defined to be
The input x must be nonnegative and less than or equal to log(b) (b = AMACH(2), the largest representable number). The argument ν = XNU must satisfy 0 ≤ ν ≤ 1.
Function BSIS is based on a code due to Cody (1983), which uses backward recursion.
In this example, Iv−1(10.0), ν = 1, …, 10 is computed and printed.
USE BSIS_INT
USE UMACH_INT
IMPLICIT NONE
! Declare variables
INTEGER N
PARAMETER (N=10)
!
INTEGER K, NOUT
REAL BSI(N), X, XNU
! Compute
XNU = 0.0
X = 10.0
CALL BSIS (XNU, X, N, BSI)
! Print the results
CALL UMACH (2, NOUT)
DO 10 K=1, N
WRITE (NOUT,99999) XNU+K-1, X, BSI(K)
10 CONTINUE
99999 FORMAT (' I sub ', F6.3, ' (', F6.3, ') = ', F10.3)
END
I sub 0.000 (10.000) = 2815.717
I sub 1.000 (10.000) = 2670.988
I sub 2.000 (10.000) = 2281.519
I sub 3.000 (10.000) = 1758.381
I sub 4.000 (10.000) = 1226.491
I sub 5.000 (10.000) = 777.188
I sub 6.000 (10.000) = 449.302
I sub 7.000 (10.000) = 238.026
I sub 8.000 (10.000) = 116.066
I sub 9.000 (10.000) = 52.319
PHONE: 713.784.3131 FAX:713.781.9260 |