TOMS708
Incomplete Beta Function Ratios
TOMS708
is a FORTRAN77 library which
computes the Incomplete Beta Function ratio
I_{x}(a,b)
,
by Armido Didonato, Alfred Morris, Jr.
11 January 2006: Thanks to Ian Smith for pointing out that my
earlier difficulties with this program were caused simply by
using the wrong set of machine constants!
The original, true, correct version of ACM TOMS Algorithm 708
is available through ACM:
http://www.acm.org/pubs/calgo
or NETLIB:
http://www.netlib.org/toms/index.html.
Languages:
TOMS708 is available in
a JAVA version and
a FORTRAN77 version and
a FORTRAN90 version.
Related Data and Programs:
ASA063,
a FORTRAN77 library which
evaluates the incomplete Beta function.
ASA109,
a FORTRAN77 library which
inverts the incomplete Beta function.
ASA226,
a FORTRAN77 library which
evaluates the CDF of the noncentral Beta distribution.
ASA310,
a FORTRAN77 library which
computes the CDF of the noncentral Beta distribution.
BETA_NC,
a FORTRAN90 library which
evaluates the CDF of the noncentral Beta distribution.
TEST_VALUES,
a FORTRAN77 library which
stores a few values of various mathematical functions.
TOMS179,
a FORTRAN77 library which
is an earlier ACM TOMS algorithm which also approximates
the incomplete Beta function.
Author:
Armido Didonato, Alfred Morris, Jr.
Reference:

Barry Brown, Lawrence Levy,
Certification of Algorithm 708:
Significant Digit Computation of the Incomplete Beta Function Ratios,
ACM Transactions on Mathematical Software,
Volume 20, Number 3, 1994, pages 393397.

Armido Didonato, Alfred Morris,
Algorithm 708:
Significant Digit Computation of the Incomplete Beta
Function Ratios,
ACM Transactions on Mathematical Software,
Volume 18, Number 3, 1992, pages 360373.
Source Code:
Examples and Tests:
TOMS708_PRB1 is the test distributed with the code.
TOMS708_PRB2 is a more extensive test.
List of Routines:

ALGDIV computes LN(GAMMA(B)/GAMMA(A+B)) when 8 <= B.

ALNREL evaluates the function LN(1 + A).

APSER evaluates I(1X)(B,A) for A very small.

BASYM performs an asymptotic expansion for IX(A,B) for large A and B.

BCORR evaluates a correction term for LN(GAMMA(A)).

BETA_CDF_VALUES returns some values of the Beta CDF.

BETA_LOG_VALUES returns some values of the Beta function for testing.

BETALN evaluates the logarithm of the Beta function.

BFRAC: continued fraction expansion for IX(A,B) when A and B are greater than 1.

BGRAT uses asymptotic expansion for IX(A,B) when B < A.

BPSER evaluates IX(A,B) when B <= 1 or B*X <= 0.7.

BRATIO evaluates the incomplete Beta function IX(A,B).

BRCMP1 evaluates EXP(MU) * (X**A*Y**B/BETA(A,B)).

BRCOMP evaluates X**A*Y**B/BETA(A,B).

BUP evaluates IX(A,B)  IX(A+N,B), where N is a positive integer.

ERF evaluates the error function.

ERF_VALUES returns some values of the ERF or "error" function for testing.

ERFC1 evaluates the complementary error function.

ESUM evaluates EXP(MU+X).

EXPARG returns the largest value for which EXP can be computed.

FPSER uses a series for IX(A,B) with B < min(eps,eps*A) and X <= 0.5.

GAM1 evaluates 1/GAMMA(A+1)  1 for 0.5 <= A <= 1.5

GAMLN evaluates LN(GAMMA(A)) for positive A.

GAMLN1 evaluates LN(GAMMA(1 + A)) for 0.2 <= A <= 1.25

GAMMA_INC_VALUES returns some values of the incomplete Gamma function.

GAMMA_LOG_VALUES returns some values of the Log Gamma function for testing.

GRAT1 evaluates P(A,X) and Q(A,X) when A <= 1.

GSUMLN evaluates LN(GAMMA(A + B)) for 1 <= A <= 2 and 1 <= B <= 2.

IPMPAR sets integer machine constants.

PSI evaluates the Digamma function.

PSI_VALUES returns some values of the Psi or Digamma function for testing.

R4_EPSILON returns the round off unit for floating arithmetic.

REXP evaluates the function EXP(X)  1.

RLOG1 evaluates the function X  LN(1 + X).

SPMPAR returns single precision real machine constants.

TIMESTAMP prints out the current YMDHMS date as a timestamp.
You can go up one level to
the FORTRAN77 source codes.
Last revised on 08 January 2008.