STSPAC : Charlie Reeve Subroutines
|
Introduction
|
Charlie Reeve wrote the subroutines available here while he
was a staff member in the Statistical Engineering Division
(SED). Although these routines were intended for his personal
use rather than as a publically distributable library, we are
providing them because they contain some routines not readily
available elsewhere. In particular, it contains routines
for computing the cumulative distribution function and
generating random numbers for the doubly non-central F and
doubly non-central t distributions (these routines
are used by the Dataplot
program).
This software is not formally supported and is not being
further developed. It is provided on an "as is" basis.
There is no formal documentation for the subroutines.
However, most of the subroutines contain usage instructions
in the comments in the source code.
|
Publications
|
Although there is no formal documentation for these
subroutines, Charlie Reeve wrote a number of SED Notes that
document some of the algorithms coded in this library. The
NIST library has graciously scanned these documents and
converted them to PDF documents. These documents were scanned
from personal copies, so some of them contain external
markings. We apologize for this.
- Charlie Reeve, (October
1986), "Accurate Computation of the Log of the Gamma
Function", SED Note 86-1. (PDF format)
- Charlie Reeve, (October
1986), "An Algorithm for Computing the Gamma
C.D.F to a Specified Accuracy", SED Note 86-2.
(PDF format)
- Charlie Reeve, (October
1986), "An Algorithm for Computing the Beta
C.D.F to a Specified Accuracy", SED Note 86-3.
(PDF format)
- Charlie Reeve, (October
1986), "An Algorithm for Computing the Doubly
Non-Central F C.D.F. to a Specified Accuracy",
SED Note 86-4. (PDF format)
- Charlie Reeve, (October
1986), "An Algorithm for Computing the Doubly
Non-Central t C.D.F to a Specified Accuracy",
SED Note 86-5.
|
Contents
|
The following subroutines and functions are available:
- FUNCTION ANORMI - Infinity norm of NxN matrix
- SUBROUTINE BARTLT - Bartlett's test for homogeneity of
variances
- SUBROUTINE CDFBET - Compute the beta cumulative distribution
function
- SUBROUTINE CDFDNF - Compute the doubly non-central F
cumulative distribution function
- SUBROUTINE CDFDNT - Compute the doubly non-central t
cumulative distribution function
- SUBROUTINE CDFF - Compute the F cumulative distribution
function
- SUBROUTINE CDFGAM - Compute the gamma cumulative
distribution function
- SUBROUTINE CDFNOR - Compute the normal cumulative
distribution function
- SUBROUTINE CDFT - Compute the t cumulative distribution
function
- SUBROUTINE CENSCL - Compute estimates of location and scale
- SUBROUTINE CIELIP - Compute inverse prediction for a linear
fit (Eisenhart method)
- FUNCTION DGAMLN - Compute the log gamma function
- FUNCTION DNCMLN - Compute natural logarithm of
"N choose M", N!/[M!(N-M)!]
- FUNCTION DPR1LN - Compute natural logarithm of:
N1!/[M1!(N1-M1)!] N2!/[M2!(N2-M2)!]
-----------------------------------
(N1+N2)!/[(M1+M2)!(N1+N2-M1-M2)!]
- SUBROUTINE DWESD - Compute the expected value and variance
of the Durbin-Watson statistic
- SUBROUTINE ELLPTS - Compute N regularly spaced points on the
perimeter of an ellipse
- SUBROUTINE FACTOR - Find the prime factors of the absolute
value of N (N an integer of 10 digits or less)
- SUBROUTINE FIBMIN - Compute the minimum of a univariate
FUNCTION within an interval using Fibonacci search
algorithm
- FUNCTION IGCD - Compute the greatest common divisor of
two integers
- FUNCTION IGCDM - Compute the greatest common divisor of
the integers in a matrix
- FUNCTION IGCDV - Compute the greatest common divisor of
the integers in a vector
- SUBROUTINE LINSYS - Solve an NxN system of linear equations
(LU decomposition)
- SUBROUTINE LISYPD - Solve an NxN system of linear equations
where the matrix is symmetric and positive definite
(Cholesky factorization)
- SUBROUTINE LSQSVD - Solve linear least squares equations
using singular value factorization
- SUBROUTINE LSTSQR - Solve linear unweighted least squares
problem
- SUBROUTINE MAD - Compute median absolute deviation
- SUBROUTINE MATCNO - Compute the condition number of an NxN
matrix
- SUBROUTINE MATHDI - Compute the diagonal of the hat matrix
- SUBROUTINE MATINV - Compute the inverse of a matrix
- SUBROUTINE MATIPD - Compute the inverse of a symmetric
positive definite matrix
- SUBROUTINE MATMPI - Compute the Moore-Penrose
psuedo-inverse of an NxM matrix (N > M)
- SUBROUTINE MATXXI - Compute the inverse and determinant of
X'X where X is an NxM (N > M) matrix
- SUBROUTINE MEANSD - Compute the mean and standard deviation
- SUBROUTINE MEDIAN - Compute the median
- SUBROUTINE MINMAX - Compute the minimum and maximum
- SUBROUTINE NEXPER - Compute the next permutation of the
integers 1, 2, ..., N
- SUBROUTINE PERMAN - Compute the permanent of an NxN matrix
- SUBROUTINE PLOTCR - Generate a line printer plot of Y vs X
- SUBROUTINE PPFBET - Compute the inverse cumulative
distribution FUNCTION of the beta distribution
- SUBROUTINE QDASIM - Numerical integration using adaptive
Simpson's rule
- SUBROUTINE QDTANH - Numerical integration using the TANH
rule
- FUNCTION QDTRAP - Numerical integration using the
trapezoidal rule
- SUBROUTINE QSMNMX - Find the minimum and maximum values of a
quadratic surface
- FUNCTION RDBETA - Generate a beta random number
- FUNCTION RDCHI2 - Generate a chi-square random number
- SUBROUTINE RDCONS - Generate uniformly-space psuedo-random
points on the surface of a cone
- SUBROUTINE RDCONV - Generate uniformly-space psuedo-random
points within a cone
- SUBROUTINE RDCYLS - Generate uniformly-space psuedo-random
points on the surface of a cylinder
- SUBROUTINE RDCYLV - Generate uniformly-space psuedo-random
points within a cylinder
- SUBROUTINE RDELLS - Generate uniformly-spaced psuedo-random
points on the surface of an ellipse
- SUBROUTINE RDELLV - Generate uniformly-spaced psuedo-random
points within an ellipse
- FUNCTION RDF - Generate a F random number
- FUNCTION RDGAMM - Generate a gamma random number
- SUBROUTINE RDHLX - Generate uniformly-spaced psuedo-random
points on a helix in three-dimensional space
- SUBROUTINE RDMNOR - Generate multivariate random numbers
- FUNCTION RDNF - Generate doubly non-central F random
numbers
- FUNCTION RDNOR - Generate a normal random number
- FUNCTION RDNOR3 - Generate a normal random number (polar
method)
- SUBROUTINE RDRECS - Generate uniformly-spaced psuedo-random
points on the surface of a three-dimensional rectange
- SUBROUTINE RDRECV - Generate uniformly-spaced psuedo-random
points within a three-dimensional rectange
- SUBROUTINE RDSPSH - Generate uniformly-spaced psuedo-random
points in a region between the surfaces of two spheres
- FUNCTION RDT - Generate a t random number
- SUBROUTINE RDTORS - Generate uniformly-spaced psuedo-random
points on the surface of a torus
- SUBROUTINE RDTORV - Generate uniformly-spaced psuedo-random
points within a torus
- FUNCTION RDUNI - Generate a uniform random number (lagged
Fibonacci generator)
- FUNCTION RDUNLL - Generate a uniform random number
(congruential generator)
- FUNCTION RDUNWH - Generate a uniform random number
(Wichman-Hill generator)
- SUBROUTINE REJ1 - Compute mean and standard deviaiton of
normal data that may be "contaminated"
- SUBROUTINE SKEKUR - Compute skewness and kurtosis
- SUBROUTINE SORT1 - Sort a data vector
- SUBROUTINE SORT2 - Sort a data vector and "carry along" a
second vector
- SUBROUTINE TRISYS - Solve a tridiagonal system of equations
- SUBROUTINE UPDATE - Compute mean and standard deviation
using an "update" algorithm
- SUBROUTINE ZEROBR - Find the zero of a univariate function
using Brent's method
|
Download the Fortran Source Code
|
You can download the Fortran source
code.
The source code is written in standard Fortran 77. It
should be portable to systems that support 32-bit (or
higher) Fortran 77 compilers. These routines were originally
written for the 60-bit CDC Fortran compiler, so you may need
to convert some routines to double precision to maintain
sufficient accuracy.
A few of these routines make calls to the LINPACK library.
The LINPACK routines are not included (LINPACK is freely
downloadble).
|
Date created: 8/11/2004
Last updated: 8/11/2004
Please email comments on this WWW page to
sedwww@nist.gov.
|
|