The software described here implements all five methods described in "Computing the Confluent Hypergeometric Function, M(a,b,x)", by K. E. Muller, 1998 (manuscript in review). Methods are described in detail in there. Also see Abramowitz and Stegun, 1964, Chapter 13 p504; Jones W. B. and Thron W. J. (1990) Continued Fractions, Reading, Mass.: Addison-Wesley, p11, p36-37; "Elements of Statistical Computing", p324, R.A. Thisted, 1988, Chapman and Hall New York. M(A,B,X)=SUM( i=0 to infinity , (x**i)*a(i) / [ b(i) * i! ] ) Here a(i) is ascending factorial, with a(i)=Gamma(a+i)/Gamma(a) There are three files associated with this documentation: MABX0101.IML EXAMPLE1.SAS EXAMPLE1.LST ************************************************************************ MABX0101.IML contains a set of 10 IML functions. _MABX1_ (A,B,X,MAXTERMS) uses method 1 _MABX2_ (A,B,X,MAXTERMS) uses method 2 _MABX3_ (A,B,X,MAXTERMS) uses method 3 _MABX4_ (A,B,X,MAXTERMS) uses method 4 _MABX5_ (A,B,X,MAXTERMS) uses method 5 _MABX1C_(A,B,X,MAXTERMS) uses method 1 with continued fraction _MABX2C_(A,B,X,MAXTERMS) uses method 2 with continued fraction -------------No 3C-------------------- _MABX4C_(A,B,X,MAXTERMS) uses method 4 with continued fraction _MABX5C_(A,B,X,MAXTERMS) uses method 5 with continued fraction Functions assume all real inputs. The fourth input, MAXTERMS, controls the maximum number of terms evaluated before the function quits and declares non-convergence. Roughly 250 is safe, but for method 5, 100 may be sufficient, especially due to how slow it is for so many terms; Method 5 may be useful with MAXTERMS =1, 2, or 3. All functions return a vector: sum(a,b,x) // LFACTOR // NTERMS // CONVERGED // max(abs(term(i))) ; M(a,b,x)=sum(a,b,x)*exp(LFACTOR) NTERMS= # of terms at which series terminated CONVERGED=1 if program judges computation converged, 0 otherwise First two elements are SAS missing value (.) if divergence detected. ************************************************************************ EXAMPLE1.SAS demonstrates how to use the modules. Note that for the range of inputs, a number of silent failures occur. "Silent" indicates that the module diverged but returns CONVERGED=1. The FILENAME statement needs to be changed in EXAMPLE1.SAS to reflect operating system systax and local environment of the user. ************************************************************************ EXAMPLE1.LST contains the output produce by EXAMPLE1.SAS ************************************************************************ The software was developed under SAS version 6.12 in OS/2, on INTEL Pentium generation chips. Two constants may need to be changed, depending on the platform. In modules 1, 1C, 3, 4 (twice), 5, 5C, the constant 1E304 is used to avoid overflow. In all modules TOLERANC=1E-10 defines numeric zero and convergence.