Go to the first, previous, next, last section, table of contents.


2 Overview

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. Additional modules are provided to efficiently store the frequencies of symbols and fixed-length substrings.

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 possible, and to investigate more computationally-intensive techniques. We have found LIBPA to be indispensable in our own research, and hope that you will find it useful in yours. If you find LIBPA useful, please let us know!

LIBPA is not guaranteed to be backward compatible. We strive to provide the best libraries for each release, and do not hesitate to completely redesign a module to improve clarity or performance. As a result, upgrading your LIBPA installation to the latest release may require you to rewrite portions of your code. We will not change the semantics of a function without also changing the prototype for that function. This policy should help you quickly upgrade your software using the latest LIBPA release.


Go to the first, previous, next, last section, table of contents.