  The library of practical abstractions (LIBPA) provides efficient
implementations of conceptually simple abstractions, in the C programming
language. We believe that the best library code is conceptually simple so that
it will be easily understood by the application programmer; parameterized by
type so that it enjoys wide applicability; and at least as efficient as a
straightforward special-purpose implementation. You will find that our software
satisfies the highest standards of software design, implementation, testing,
and benchmarking.
  The current LIBPA release is a source code distribution only. It consists of
modules for portable memory management, one dimensional arrays of arbitrary
types, compact symbol tables, hash tables for arbitrary types, a trie module
for length-delimited strings over arbitrary alphabets, single precision
floating point numbers with extended exponents, and logarithmic representations
of probability values using either fixed or floating point numbers.
  We have used LIBPA to implement a wide range of statistical models for both
continuous and discrete domains. The time and space efficiency of LIBPA has
allowed us to build larger statistical models than previously reported, and to
investigate more computationally-intensive techniques than previously possible.
We have found LIBPA to be indispensible in our own research, and hope that you
will find it useful in yours.
