***PURPOSE Compute an N member sequence of I Bessel functions
I/SUB(ALPHA+K-1)/(X), K=1,...,N or scaled Bessel functions
EXP(-X)*I/SUB(ALPHA+K-1)/(X), K=1,...,N for nonnegative
ALPHA and X.
***LIBRARY SLATEC
***CATEGORY C10B3
***TYPE REAL(kind=wp) (BESI-S, wp_besi-D)
***KEYWORDS I BESSEL FUNCTION, SPECIAL FUNCTIONS
***AUTHOR Amos, D. E., (SNLA)
Daniel, S. L., (SNLA)
***DESCRIPTION
Abstract **** a REAL(kind=wp) routine ****
wp_besi computes an N member sequence of I Bessel functions
I/sub(ALPHA+K-1)/(X), K=1,...,N or scaled Bessel functions
EXP(-X)*I/sub(ALPHA+K-1)/(X), K=1,...,N for nonnegative ALPHA
and X. A combination of the power series, the asymptotic
expansion for X to infinity, and the uniform asymptotic
expansion for NU to infinity are applied over subdivisions of
the (NU,X) plane. For values not covered by one of these
formulae, the order is incremented by an integer so that one
of these formulae apply. Backward recursion is used to reduce
orders by integer values. The asymptotic expansion for X to
infinity is used only when the entire sequence (specifically
the last member) lies within the region covered by the
expansion. Leading terms of these expansions are used to test
for over or underflow where appropriate. If a sequence is
requested and the last member would underflow, the result is
set to zero and the next lower order tried, etc., until a
member comes on scale or all are set to zero. An overflow
cannot occur with scaling.
The maximum number of significant digits obtainable
is the smaller of 14 and the number of digits carried in
REAL(kind=wp) arithmetic.
Description of Arguments
Input X,ALPHA are REAL(kind=wp)
X - X .GE. 0.00_wp
ALPHA - order of first member of the sequence,
ALPHA .GE. 0.00_wp
KODE - a parameter to indicate the scaling option
KODE=1 returns
Y(K)= I/sub(ALPHA+K-1)/(X),
K=1,...,N
KODE=2 returns
Y(K)=EXP(-X)*I/sub(ALPHA+K-1)/(X),
K=1,...,N
N - number of members in the sequence, N .GE. 1
Output Y is REAL(kind=wp)
Y - a vector whose first N components contain
values for I/sub(ALPHA+K-1)/(X) or scaled
values for EXP(-X)*I/sub(ALPHA+K-1)/(X),
K=1,...,N depending on KODE
NZ - number of components of Y set to zero due to
underflow,
NZ=0 , normal return, computation completed
NZ .NE. 0, last NZ components of Y set to zero,
Y(K)=0.00_wp, K=N-NZ+1,...,N.
Error Conditions
Improper input arguments - a fatal error
Overflow with KODE=1 - a fatal error
Underflow - a non-fatal error(NZ .NE. 0)
***REFERENCES D. E. Amos, S. L. Daniel and M. K. Weston, CDC 6600
subroutines IBESS and JBESS for Bessel functions
I(NU,X) and J(NU,X), X .GE. 0, NU .GE. 0, ACM
Transactions on Mathematical Software 3, (1977),
pp. 76-92.
F. W. J. Olver, Tables of Bessel Functions of Moderate
or Large Orders, NPL Mathematical Tables 6, Her
Majesty's Stationery Office, London, 1962.
***ROUTINES CALLED F1MACH, cfp_asyik, cfp_lngam, I1MACH, XERMSG
***REVISION HISTORY (YYMMDD)
750101 DATE WRITTEN
890531 Changed all specific intrinsics to generic. (WRB)
890911 Removed unnecessary intrinsics. (WRB)
890911 REVISION DATE from Version 3.2
891214 Prologue converted to Version 4.0 format. (BAB)
900315 CALLs to XERROR changed to CALLs to XERMSG. (THJ)
900326 Removed duplicate information from DESCRIPTION section.
(WRB)
920501 Reformatted the REFERENCES section. (WRB)