SPECFUN
Special Function Evaluation
SPECFUN is a FORTRAN90 library
which evaluates certain special functions.
In particular, SPECFUN can evaluate the I, J, K and Y
Bessel functions, of orders 0, 1, or arbitrary positive integer
order N, or for any positive non-integer order (an unusual
feature).
Routines are also available for the Gamma function, exponential
integrals, the error function, the Psi function, and Dawson's integral.
Related Data and Programs:
CORDIC
is a FORTRAN90 library of routines which
use the CORDIC method to compute certain elementary functions.
G95_INTRINSICS
is a directory which
includes some examples of the use of intrinsic functions peculiar
to the G95 FORTRAN compiler, which include Bessel J and Y functions,
ERF and GAMMA.
GSL
is a C++ library of routines, the Gnu Scientific Library,
which evaluates many special functions.
MACHAR
is a FORTRAN90 library used to compute machine arithmetic parameters.
POLPAK
is a FORTRAN90 library of routines which
evaluates certain mathematical functions, especially some
recursive polynomial families.
SPECFUN is also available in
a FORTRAN77 version.
SLATEC
is a FORTRAN90 library of routines
which evaluates many special functions.
TEST_VALUES
is a FORTRAN90 library of routines which
contains a few test values of many functions.
Reference:
-
Donald Amos,
Computation of Modified Bessel Functions and Their Ratios,
Mathematics of Computation,
Volume 28, Number 24, January 1974.
-
JB Campbell,
On Temme's Algorithm for the Modified Bessel Functions of the
Third Kind,
ACM Transactions on Mathematical Software,
Volume 6, Number 4, December 1980, pages 581-586.
-
JB Campbell,
Bessel functions J_nu(x) and Y_nu(x) of real order and real
argument,
Computational Physics Communications,
Volume 18, 1979, pages 133-142.
-
William Cody,
An Overview of Software Development for Special Functions,
in Numerical Analysis Dundee, 1975,
edited by GA Watson,
Lecture Notes in Mathematics, 506,
Springer, 1976,
LC: QA3.L28.v506.
-
William Cody,
Rational Chebyshev Approximations for the Error Function,
Mathematics of Computation,
Volume 23, Number 107, July 1969, pages 631-638.
-
William Cody,
Algorithm 597:
Sequence of Modified Bessel Functions of the First Kind,
ACM Transactions of Mathematical Software,
Volume 9, Number 2, June 1983, pages 242-245.
-
William Cody,
Algorithm 665:
MACHAR, a subroutine to dynamically determine
machine parameters,
ACM Transactions on Mathematical Software,
Volume 14, Number 4, December 1988, pages 303-311.
-
William Cody,
Algorithm 715:
SPECFUN - A Portable FORTRAN Package of
Special Function Routines and Test Drivers,
ACM Transactions on Mathematical Software,
Volume 19, Number 1, March 1993, pages 22-32.
-
William Cody,
Performance evaluation of programs for the error and
complementary error functions,
ACM Transactions on Mathematical Software,
Volume 16, Number 1, March 1990, pages 29-37.
-
William Cody,
Performance evaluation of programs related to the real gamma function,
ACM Transactions on Mathematical Software,
Volume 17, Number 1, March 1991, pages 46-54.
-
William Cody, Kenneth Hillstrom,
Chebyshev Approximations for the Natural Logarithm of the
Gamma Function,
Mathematics of Computation,
Volume 21, Number 98, April 1967, pages 198-203.
-
William Cody, Kathleen Paciorek, Henry Thacher,
Chebyshev Approximations for Dawson's Integral,
Mathematics of Computation,
Volume 24, Number 109, January 1970, pages 171-178.
-
William Cody, Laura Stoltz,
Performance evaluation of programs for certain Bessel functions,
ACM Transactions on Mathematical Software,
Volume 15, Number 1, March 1989, pages 41-48.
-
William Cody, Laura Stoltz,
The Use of Taylor series to test accuracy of function programs,
ACM Transactions on Mathematical Software,
Volume 17, Number 1, March 1991, pages 55-63.
-
William Cody, Anthony Strecok, Henry Thacher,
Chebyshev Approximations for the Psi Function,
Mathematics of Computation,
Volume 27, Number 121, January 1973, pages 123-127.
-
William Cody, Henry Thacher,
Rational Chebyshev Approximations for the Exponential
Integral E1(x),
Mathematics of Computation,
Volume 22, Number 103, July 1968, pages 641-649.
-
William Cody, Henry Thacher,
Chebyshev Approximations for the Exponential
Integral Ei(x),
Mathematics of Computation,
Volume 23, Number 106, April 1969, pages 289-303.
-
William Cody, William Waite,
Software Manual for the Elementary Functions,
Prentice Hall, 1980,
ISBN: 0138220646,
LC: QA331.C635.
-
Walter Gautschi,
Algorithm 282:
Derivatives of EXP(X)/X, COS(X)/X, and SIN(X)/X,
Communications of the ACM,
Volume 9, April 1966, page 272.
-
John Hart, Ward Cheney, Charles Lawson, Hans Maehly,
Charles Mesztenyi, John Rice, Henry Thatcher,
Christoph Witzgall,
Computer Approximations,
Wiley, 1968,
LC: QA297.C64.
-
Michael Malcolm,
Algorithms to Reveal Properties of Floating Point Arithmetic,
Communications of the ACM,
Volume 15, Number 11, November 1972, pages 949-951.
-
Frank Olver, David Sookne,
A Note on Backward Recurrence Algorithms,
Mathematics of Computation,
Volume 26, 1972, pages 941-947.
-
Malcolm Pike, David Hill,
Algorithm 266:
Pseudo-Random Numbers,
Communications of the ACM,
Volume 8, Number 10, October 1965, page 605.
-
David Sookne,
Bessel Functions of Real Argument and Integer Order,
NBS Journal of Research B,
Volume 77B, 1973, pages 125-132.
-
Nico Temme,
On the numerical evaluation of the ordinary Bessel function
of the second kind,
Journal of Computational Physics,
Volume 21, 1976, pages 343-350.
Source Code:
Examples and Tests:
SPECFUN_PRB1 makes some sophisticated accuracy checks.
SPECFUN_PRB2 compares computed results to tables of
values extracted from the program library TEST_VALUES.
List of Routines:
-
BESEI0 evaluates the exponentially scaled Bessel I0(X) function.
-
BESEI1 evaluates the exponentially scaled Bessel I1(X) function.
-
BESEK0 evaluates the exponentially scaled Bessel K0(X) function.
-
BESEK1 evaluates the exponentially scaled Bessel K1(X) function.
-
BESI0 evaluates the Bessel I0(X) function.
-
BESI1 evaluates the Bessel I1(X) function.
-
BESJ0 evaluates the Bessel J0(X) function.
-
BESJ1 evaluates the Bessel J1(X) function.
-
BESK0 evaluates the Bessel K0(X) function.
-
BESK1 evaluates the Bessel K1(X) function.
-
BESY0 evaluates the Bessel Y0(X) function.
-
BESY1 evaluates the Bessel Y1(X) function.
-
CALCEI computes various exponential integrals.
-
CALCI0 computes various I0 Bessel functions.
-
CALCI1 computes various I1 Bessel functions.
-
CALCK0 computes various K0 Bessel functions.
-
CALCK1 computes various K1 Bessel functions.
-
CALERF computes various forms of the error function.
-
CALJY0 computes various J0 and Y0 Bessel functions.
-
CALJY1 computes various J1 and Y1 Bessel functions.
-
DAW evaluates Dawson's integral function.
-
DLGAMA evaluates log ( Gamma ( X ) ) for a real argument.
-
DSUBN evaluates derivatives of Ei(X).
-
EI evaluates the exponential integral Ei(X).
-
EONE evaluates the exponential integral E1(X).
-
EXPEI evaluates the scaled exponential integral exp(-X) * Ei(X).
-
MACHAR determines various machine arithmetic parameters.
-
R8_ERF evaluates the error function.
-
R8_ERFC evaluates the complementary error function.
-
R8_ERFCX evaluates the exponentially scaled complementary error function.
-
R8_GAMMA evaluates Gamma(X) for a real argument.
-
R8_PSI evaluates the function Psi(X).
-
REN is a random number generator.
-
RIBESL calculates I Bessel function with non-integer orders.
-
RJBESL calculates J Bessel function with non-integer orders.
-
RKBESL calculates K Bessel function with non-integer orders.
-
RYBESL calculates Y Bessel function with non-integer orders.
-
TIMESTAMP prints out the current YMDHMS date as a timestamp.
You can go up one level to
the FORTRAN90 source codes.
Last revised on 23 January 2008.