C344: Bessel Functions J with Complex Argument and Non-Integer Order

Author(s): K.S. Kölbig Library: MATHLIB
Submitter: Submitted: 24.01.1986
Language: Fortran Revised: 15.03.1993

Subroutine subprograms CBSJA, WBSJA and WQBSJA calculate a sequence of Bessel functions

displaymath143

for complex arguments z, tex2html_wrap_inline147 , and tex2html_wrap_inline149 .

The quadruple-precision version WQBSJA is available only on computers which support a COMPLEX*32 Fortran data type.

Structure:

SUBROUTINE subprograms
User Entry Names: CBSJA, WBSJA, WQBSJA
Files Referenced: Unit 6
External References: GAMMA, DGAMMA, QGAMMA, MTLMTR, ABEND

Usage:

Single-precision version:

    CALL CBSJA(Z,A,NL,ND,CB)
Z
(COMPLEX) Argument z.
A
(REAL) Order a of the first Bessel function in the computed sequence.
NL
(INTEGER) Specifies the order tex2html_wrap_inline155 of the last Bessel function in the computed sequence.
ND
(INTEGER) Requested number of correct significant decimal digits.
CB
(COMPLEX) One-dimensional array with dimension (0:d) where tex2html_wrap_inline157 .
On exit, CB(n), tex2html_wrap_inline159 , contains tex2html_wrap_inline161 .
Double-precision version:
    CALL WBSJA(Z,A,NL,ND,CB)
where A is of type DOUBLE PRECISION, Z and CB are of type COMPLEX*16.

On computers whose Fortran compiler does not support COMPLEX*16 arithmetic (e.g. CDC and Cray) the storage conventions for Z and CB are as follows:

Z
(DOUBLE PRECISION) Array of declared dimension (2) containing Re tex2html_wrap_inline163 in Z(1) and Im tex2html_wrap_inline165 in Z(2).
CB
(DOUBLE PRECISION) Two-dimensional array with dimensions (2,0:d) where tex2html_wrap_inline167 . On exit, CB(1,n) contains Re tex2html_wrap_inline169 and CB(2,n) contains Im tex2html_wrap_inline171 , tex2html_wrap_inline173 .
Quadruple-precision version:
    CALL WQBSJA(Z,A,NL,ND,CB)
where A is of type REAL*16, Z and CB are of type COMPLEX*32.

Method:

The method is an extension to complex arguments of a variant of Miller's backwards recurrence algorithm (see Ref. 1). The requested accuracy is obtained, when possible, by a judicious choice of the initial value of the recursion index, together with at least one repetition of the recursion with this index increased by 5.

Restrictions:

Im tex2html_wrap_inline175 if Re tex2html_wrap_inline177 , tex2html_wrap_inline179 , tex2html_wrap_inline181 .

Accuracy:

If Z does not lie on the real axis, the requested accuracy is usually obtained. There may be a loss of accuracy if A is close to 0 or 1, and in other special situations.

Error handling:

Error C344.1: tex2html_wrap_inline183 with tex2html_wrap_inline185 and tex2html_wrap_inline187 .
Error C344.2: tex2html_wrap_inline189 or tex2html_wrap_inline191 .
Error C344.3: tex2html_wrap_inline193 or tex2html_wrap_inline195 .
Error C344.4: Difficulties of convergence. Try smaller tex2html_wrap_inline197 .
In all cases, a message is written on Unit 6, unless subroutine MTLSET (N002) has been called. If Error 1 to 3 occurs, the initial contents of array CB is left unchanged. If the requested accuracy cannot be obtained after the initial recursion index has been increased fifty times (Error 4), the contents of array CB is undefined.

The subprogram is based on Algol procedures described in Ref. 1.

References:

  1. W. Gautschi, Algorithm 236: Bessel functions of the first kind, Collected Algorithms from CACM (1965)
tex2html_wrap_inline199

Michel Goossens Tue Jun 4 22:43:47 METDST 1996