Algorithm 597: sequence of modified Bessel functions of the first kind

This FORTRAN subroutine calculates sequences of modified Bessel functions of the first kind, I/sub n+a/(x), n = 0, 1, ..., NB - 1 or e/sup -x/I/sub n+a/(x), n = 0, 1, ..., NB - 1, where 0 less than or equal to a < 1, and 0 less than or equal to x less than or equal to EXPARG or 0 less than or equal to x less than or equal to XLARGE, as appropriate. The method is based on the backward-recurrence algorithm of Miller as modified by Olver. Olver's contribution is an efficient method for determining the proper starting point for backward recurrence to meet a requested accuracy. The scheme uses a modified forward recurrence to perform Gaussian elimination on a set of simultaneous linear equations related to the usual backward-recurrence equations. The distance of the forward sweep, that is, the proper starting point for the backward recurrence, is determined dynamically from estimates of the corresponding error in the solution to the linear system. Backward substitution in these equations then returns the necessary function values with guaranteed error bounds. 7 references, 1 table.