FN The Fullerton Function Library.

FN is a FORTRAN90 library which approximates elementary and special functions using Chebyshev polynomials; functions include Airy, Bessel I, Bessel J, Bessel K, Bessel Y, beta, confluent hypergeometric, cosine integral, Dawson's integral, digamma (psi), error, exponential integral, gamma, hyperbolic cosine integral, hyperbolic sine integral, incomplete gamma, log gamma, logarithmic integral, Pochhammer, psi, sine integral, Spence; by Wayne Fullerton.

The original version of the library provided routines for single precision complex, single precision real, and double precision real arguments and used the prefixes "C" and "D" to indicate the complex and double precision versions.

This scheme has been modified for consistency, and also to avoid conflict with the names of functions commonly provided by various compilers. The prefixes "C4_", "R4_" and "R8_" are used to indicate functions for single precision complex, single precision real, and double precision real arguments. For example, the sine function can be calculated by the functions C4_SIN, R4_SIN or R8_SIN.

The original, true, correct version of FN is available through NETLIB: http://www.netlib.org/fn/index.html.

Languages:

FN is available in a C version and a C++ version and a FORTRAN77 version and a FORTRAN90 version and a MATLAB version and a Python version.

Related Data and Programs:

C4LIB, a FORTRAN90 library which implements certain elementary functions for single precision complex variables;

C8LIB, a FORTRAN90 library which implements certain elementary functions for double precision complex variables;

CLAUSEN, a FORTRAN90 library which evaluates a Chebyshev interpolant to the Clausen function Cl2(x).

F90_INTRINSICS, a FORTRAN90 program which illustrates the use of FORTRAN90 intrinsic functions.

G95_INTRINSICS, a FORTRAN90 program which illustrates the use of intrinsic functions provided by the Gnu G95 compiler.

GFORTRAN_INTRINSICS, a FORTRAN90 program which illustrates the use of intrinsic functions provided by the Gnu GFORTRAN compiler.

MACHAR, a FORTRAN90 library which computes the appropriate values of machine constants for a given machine.

MACHINE, a FORTRAN90 library which stores the appropriate values of machine constants for a given machine.

R4LIB, a FORTRAN90 library which contains many utility routines, using "R4" or "single precision real" arithmetic.

R8LIB, a FORTRAN90 library which contains many utility routines, using "R8" or "double precision real" arithmetic.

SPECFUN, a FORTRAN90 library which computes special functions, including Bessel I, J, K and Y functions, and the Dawson, E1, EI, Erf, Gamma, Psi/Digamma functions.

SPECIAL_FUNCTIONS, a FORTRAN90 library which computes the Beta, Error, Gamma, Lambda, Psi functions, the Airy, Bessel I, J, K and Y, Hankel, Jacobian elliptic, Kelvin, Mathieu, Struve functions, spheroidal angular functions, parabolic cylinder functions, hypergeometric functions, the Bernoulli and Euler numbers, the Hermite, Laguerre and Legendre polynomials, the cosine, elliptic, exponential, Fresnel and sine integrals, by Shanjie Zhang, Jianming Jin;

TEST_VALUES, a FORTRAN90 library which supplies test values of various mathematical functions.

TOMS715, a FORTRAN90 library which evaluates special functions, including the Bessel I, J, K, and Y functions of order 0, of order 1, and of any real order, Dawson's integral, the error function, exponential integrals, the gamma function, the normal distribution function, the psi function. This is a version of ACM TOMS algorithm 715.

Reference:

1. Wayne Fullerton,
Portable Special Function Routines,
in Portability of Numerical Software,
edited by Wayne Cowell,
Lecture Notes in Computer Science, Volume 57, pages 452-483,
Springer 1977,
ISBN: 978-3-540-08446-4,
LC: QA297.W65.

List of Routines:

• C4_COS evaluates the cosine of a C4 argument.
• C4_SIN evaluates the sine of a C4 argument.
• I4_MACH returns integer machine dependent constants.
• R4_ACOS evaluates the arc-cosine of an R4 argument.
• R4_ACOSH evaluates the arc-hyperbolic cosine of an R4 argument.
• R4_ADMP: modulus and phase of the derivative of the Airy function.
• R4_AI evaluates the Airy function Ai of an R4 argument.
• R4_AID evaluates the derivative of the Airy function Ai of an R4 argument.
• R4_AIDE: exponentially scaled derivative, Airy function Ai of an R4 argument.
• R4_AIE evaluates the exponential scaled Airy function Ai of an R4 argument.
• R4_AIMP evaluates the modulus and phase of the Airy function.
• R4_AINT truncates an R4 argument to an integer.
• R4_ASIN evaluates the arc-sine of an R4 argument.
• R4_ASINH evaluates the arc-sine of an R4 argument.
• R4_ATAN evaluates the arc-tangent of an R4 argument.
• R4_ATAN2 evaluates the arc-tangent of two R4 arguments.
• R4_ATANH evaluates the arc-hyperbolic tangent of an R4 argument.
• R4_BESI0 evaluates the Bessel function I of order 0 of an R4 argument.
• R4_BESI0E evaluates the exponentially scaled Bessel function I0(X).
• R4_BESI1 evaluates the Bessel function I of order 1 of an R4 argument.
• R4_BESI1E: exponentially scaled Bessel function I of order 1 of an R4 argument.
• R4_BESJ0 evaluates the Bessel function J of order 0 of an R4 argument.
• R4_BESJ1 evaluates the Bessel function J of order 1 of an R4 argument.
• R4_BESK0 evaluates the Bessel function K of order 0 of an R4 argument.
• R4_BESK0E evaluates the exponentially scaled Bessel function K0(X).
• R4_BESK1 evaluates the Bessel function K of order 1 of an R4 argument.
• R4_BESK1E evaluates the exponentially scaled Bessel function K1(X).
• R4_BESKES evaluates a sequence of exponentially scaled K Bessel functions at X.
• R4_BESKS evaluates a sequence of K Bessel functions at X.
• R4_BESY0 evaluates the Bessel function Y of order 0 of an R4 argument.
• R4_BESY1 evaluates the Bessel function Y of order 1 of an R4 argument.
• R4_BETA evaluates the beta function of R4 arguments.
• R4_BETAI evaluates the incomplete beta ratio of R4 arguments.
• R4_BI evaluates the Airy function Bi of an R4 argument.
• R4_BID evaluates the derivative of the Airy function Bi of an R4 argument.
• R4_BIDE: exponentially scaled derivative, Airy function Bi of an R4 argument.
• R4_BIE evaluates the exponentially scaled Airy function Bi of an R4 argument.
• R4_BINOM evaluates the binomial coefficient using R4 arithmetic.
• R4_CBRT computes the cube root of an R4.
• R4_CHI evaluates the hyperbolic cosine integral of an R4 argument.
• R4_CHU evaluates the confluent hypergeometric function of R4 arguments.
• R4_CHU_SCALED: scaled confluent hypergeometric function of R4 arguments.
• R4_CI evaluates the cosine integral Ci of an R4 argument.
• R4_CIN evaluates the alternate cosine integral Cin of an R4 argument.
• R4_CINH evaluates the alternate hyperbolic cosine integral Cinh of an R4 argument.
• R4_COS evaluates the cosine of an R4 argument.
• R4_COS_DEG evaluates the cosine of an R4 argument in degrees.
• R4_COSH evaluates the hyperbolic cosine of an R4 argument.
• R4_COT evaluates the cotangent of an R4 argument.
• R4_CSEVL evaluates a Chebyshev series.
• R4_DAWSON evaluates Dawson's integral of an R4 argument.
• R4_E1 evaluates the exponential integral E1 for an R4 argument.
• R4_EI evaluates the exponential integral Ei for an R4 argument.
• R4_ERF evaluates the error function of an R4 argument.
• R4_ERFC evaluates the co-error function of an R4 argument.
• R4_EXP evaluates the exponential of an R4 argument.
• R4_EXPREL evaluates the exponential relative error term of an R4 argument.
• R4_FAC evaluates the factorial of an I4 argument.
• R4_GAMI evaluates the incomplete gamma function for an R4 argument.
• R4_GAMIC evaluates the complementary incomplete gamma function.
• R4_GAMIT evaluates Tricomi's incomplete gamma function for an R4 argument.
• R4_GAML evaluates bounds for an R4 argument of the gamma function.
• R4_GAMMA evaluates the gamma function of an R4 argument.
• R4_GAMR evaluates the reciprocal gamma function of an R4 argument.
• R4_GMIC: complementary incomplete gamma, small X, A near negative integer.
• R4_GMIT: Tricomi's incomplete gamma function for small X.
• R4_INITS initializes a Chebyshev series.
• R4_INT returns the integer part of an R4 argument.
• R4_KNUS computes a sequence of K Bessel functions.
• R4_LBETA evaluates the logarithm of the beta function of R4 arguments.
• R4_LGAMS evaluates the log of |gamma(x)| and sign, for an R4 argument.
• R4_LGIC evaluates the log complementary incomplete gamma function for large X.
• R4_LGIT evaluates the log of Tricomi's incomplete gamma function.
• R4_LGMC evaluates the log gamma correction factor for an R4 argument.
• R4_LI evaluates the logarithmic integral for an R4 argument.
• R4_LNGAM evaluates the log of the absolute value of gamma of an R4 argument.
• R4_LNREL evaluates log ( 1 + X ) for an R4 argument.
• R4_LOG evaluates the logarithm of an R4.
• R4_LOG10 evaluates the logarithm, base 10, of an R4.
• R4_MACH returns single precision real machine constants.
• R4_MACHAR determines single precision machine constants.
• R4_PAK packs a base 2 exponent into an R4.
• R4_POCH evaluates Pochhammer's function of R4 arguments.
• R4_POCH1 evaluates a quantity related to Pochhammer's symbol.
• R4_PSI evaluates the psi function of an R4 argument.
• R4_RAND is a portable pseudorandom number generator.
• R4_RANDGS generates a normally distributed random number.
• R4_RANDOM is a portable pseudorandom number generator.
• R4_RANF is a driver for R4_RANDOM.
• R4_REN is a simple random number generator.
• R4_SHI evaluates the hyperbolic sine integral Shi of an R4 argument.
• R4_SI evaluates the sine integral Si of an R4 argument.
• R4_SIFG is a utility routine.
• R4_SIN evaluates the sine of an R4 argument.
• R4_SIN_DEG evaluates the sine of an R4 argument in degrees.
• R4_SINH evaluates the hyperbolic sine of an R4 argument.
• R4_SPENCE evaluates a form of Spence's function for an R4 argument.
• R4_SQRT computes the square root of an R4.
• R4_TAN evaluates the tangent of an R4 argument.
• R4_TANH evaluates the hyperbolic tangent of an R4 argument.
• R4_UPAK unpacks an R4 into a mantissa and exponent.
• R8_ACOS evaluates the arc-cosine of an R8 argument.
• R8_ACOSH evaluates the arc-hyperbolic cosine of an R8 argument.
• R8_ADMP: modulus and phase of the derivative of the Airy function.
• R8_AI evaluates the Airy function Ai of an R8 argument.
• R8_AID evaluates the derivative of the Airy function Ai of an R8 argument.
• R8_AIDE: exponentially scaled derivative, Airy function Ai of an R8 argument.
• R8_AIE evaluates the exponentially scaled Airy function Ai of an R8 argument.
• R8_AIMP evaluates the modulus and phase of the Airy function.
• R8_AINT truncates an R8 argument to an integer.
• R8_ASIN evaluates the arc-sine of an R8 argument.
• R8_ASINH evaluates the arc-sine of an R8 argument.
• R8_ATAN evaluates the arc-tangent of an R8 argument.
• R8_ATAN2 evaluates the arc-tangent of two R8 arguments.
• R8_ATANH evaluates the arc-hyperbolic tangent of an R8 argument.
• R8_B0MP evaluates the modulus and phase for the Bessel J0 and Y0 functions.
• R8_B1MP evaluates the modulus and phase for the Bessel J1 and Y1 functions.
• R8_BESI0 evaluates the Bessel function I of order 0 of an R8 argument.
• R8_BESI0E evaluates the exponentially scaled Bessel function I0(X).
• R8_BESI1 evaluates the Bessel function I of order 1 of an R8 argument.
• R8_BESI1E evaluates the exponentially scaled Bessel function I1(X).
• R8_BESJ0 evaluates the Bessel function J of order 0 of an R8 argument.
• R8_BESJ1 evaluates the Bessel function J of order 1 of an R8 argument.
• R8_BESK0 evaluates the Bessel function K of order 0 of an R8 argument.
• R8_BESK0E evaluates the exponentially scaled Bessel function K0(X).
• R8_BESK1 evaluates the Bessel function K of order 1 of an R8 argument.
• R8_BESK1E evaluates the exponentially scaled Bessel function K1(X).
• R8_BESKES evaluates a sequence of exponentially scaled K Bessel functions at X.
• R8_BESKS evaluates a sequence of K Bessel functions at X.
• R8_BESY0 evaluates the Bessel function Y of order 0 of an R8 argument.
• R8_BESY1 evaluates the Bessel function Y of order 1 of an R8 argument.
• R8_BETA evaluates the beta function of R8 arguments.
• R8_BETAI evaluates the incomplete beta ratio of R8 arguments.
• R8_BI evaluates the Airy function Bi of an R8 argument.
• R8_BID evaluates the derivative of the Airy function Bi of an R8 argument.
• R8_BIDE: exponentially scaled derivative, Airy function Bi of an R8 argument.
• R8_BIE evaluates the exponentially scaled Airy function Bi of an R8 argument.
• R8_BINOM evaluates the binomial coefficient using R8 arithmetic.
• R8_CBRT computes the cube root of an R8.
• R8_CHI evaluates the hyperbolic cosine integral of an R8 argument.
• R8_CHU evaluates the confluent hypergeometric function of R8 arguments.
• R8_CHU_SCALED: scaled confluent hypergeometric function of R8 arguments.
• R8_CI evaluates the cosine integral Ci of an R8 argument.
• R8_CIN evaluates the alternate cosine integral Cin of an R8 argument.
• R8_CINH evaluates the alternate hyperbolic cosine integral Cinh of an R8 argument.
• R8_COS evaluates the cosine of an R8 argument.
• R8_COS_DEG evaluates the cosine of an R8 argument in degrees.
• R8_COSH evaluates the hyperbolic cosine of an R8 argument.
• R8_COT evaluates the cotangent of an R8 argument.
• R8_CSEVL evaluates a Chebyshev series.
• R8_DAWSON evaluates Dawson's integral of an R8 argument.
• R8_E1 evaluates the exponential integral E1 for an R8 argument.
• R8_EI evaluates the exponential integral Ei for an R8 argument.
• R8_ERF evaluates the error function of an R8 argument.
• R8_ERFC evaluates the co-error function of an R8 argument.
• R8_EXP evaluates the exponential of an R8 argument.
• R8_EXPREL evaluates the exponential relative error term of an R8 argument.
• R8_FAC evaluates the factorial of an I4 argument.
• R8_GAMI evaluates the incomplete gamma function for an R8 argument.
• R8_GAMIC evaluates the complementary incomplete gamma function.
• R8_GAMIT evaluates Tricomi's incomplete gamma function for an R8 argument.
• R8_GAML evaluates bounds for an R8 argument of the gamma function.
• R8_GAMMA evaluates the gamma function of an R8 argument.
• R8_GAMR evaluates the reciprocal gamma function of an R8 argument.
• R8_GMIC: complementary incomplete gamma, small X, A near negative integer.
• R8_GMIT: Tricomi's incomplete gamma function for small X.
• R8_INITS initializes a Chebyshev series.
• R8_INT returns the integer part of an R8 argument.
• R8_KNUS computes a sequence of K Bessel functions.
• R8_LBETA evaluates the logarithm of the beta function of R8 arguments.
• R8_LGAMS evaluates the log of |gamma(x)| and sign, for an R8 argument.
• R8_LGIC evaluates the log complementary incomplete gamma function for large X.
• R8_LGIT evaluates the log of Tricomi's incomplete gamma function.
• R8_LGMC evaluates the log gamma correction factor for an R8 argument.
• R8_LI evaluates the logarithmic integral for an R8 argument.
• R8_LNGAM evaluates the log of the absolute value of gamma of an R8 argument.
• R8_LNREL evaluates log ( 1 + X ) for an R8 argument.
• R8_LOG evaluates the logarithm of an R8.
• R8_LOG10 evaluates the logarithm, base 10, of an R8.
• R8_MACH returns double precision real machine-dependent constants.
• R8_MACHAR determines double precision machine constants.
• R8_PAK packs a base 2 exponent into an R8.
• R8_POCH evaluates Pochhammer's function of R8 arguments.
• R8_POCH1 evaluates a quantity related to Pochhammer's symbol.
• R8_PSI evaluates the psi function of an R8 argument.
• R8_REN is a simple random number generator.
• R8_SHI evaluates the hyperbolic sine integral Shi of an R8 argument.
• R8_SI evaluates the sine integral Si of an R8 argument.
• R8_SIFG is a utility routine.
• R8_SIN evaluates the sine of an R8 argument.
• R8_SIN_DEG evaluates the sine of an R8 argument in degrees.
• R8_SINH evaluates the hyperbolic sine of an R8 argument.
• R8_SPENCE evaluates a form of Spence's function for an R8 argument.
• R8_SQRT computes the square root of an R8.
• R8_TAN evaluates the tangent of an R8 argument.
• R8_TANH evaluates the hyperbolic tangent of an R8 argument.
• R8_UPAK unpacks an R8 into a mantissa and exponent.
• TIMESTAMP prints out the current YMDHMS date as a timestamp.

You can go up one level to the FORTRAN90 source codes.

Last revised on 26 September 2011.