DIST:  Markov chain sampling for a specified distribution.

The 'dist' programs allow you to specify a distribution by giving an
"energy" function (minus the log of the density, plus an arbitrary
constant), and to then generate a sample from this distribution using
the various Markov chain methods.  

These programs are primarily intended for use in demonstrating the
Markov chain methods; using these programs to sample from many of the
distributions encountered in real Bayesian inference problems would be
tedious or impossible.  However, the C source for the 'dist' programs,
as well that for the demo for a bivariate Gaussian (see bvg.doc), does
illustrate how to interface to the generic Markov chain routines, in
order to write a suite of programs for some new application.  The code
for this in the 'dist' and 'bvg' programs is perhaps more easily
understood than the more complex code in the 'net', 'gp', and 'mix'

The distribution is specified using the dist-spec program (see
dist-spec.doc).  An initial state for the Markov chain can then be
specified (see dist-initial.doc).  The Markov chain operations to use
should then be specified (see mc-spec.doc), after which the Markov
chain is run using dist-mc (see dist-mc.doc).  The resulting states
can be printed (see dist-display.doc), or the values of selected state
variables can be plotted (see xxx-plt.doc and dist-quantities.doc).

Note that values for the energy function, and its gradient if
required, are calculated by an interpreter written in C, which is
considerably slower than compiled C code.  The compute time required
to sample from a distribution using the 'dist' programs will therefore
be greater than would be required using a specially-written module.

            Copyright (c) 1995-2003 by Radford M. Neal