           SPELL=libcoyote
         VERSION=2.2.1
          SOURCE=${SPELL}-${VERSION}.tar.gz
SOURCE_DIRECTORY=${BUILD_DIRECTORY}/${SPELL}-${VERSION}
   SOURCE_URL[0]=http://www.coyotegulch.com/${SPELL}/${SOURCE}
          MD5[0]=e32311eb615ff8df1e76b226133cfbc3
       BUILD_API=2
        WEB_SITE=http://www.coyotegulch.com/libcoyote/
         ENTERED=20031218
         UPDATED=20031218
      LICENSE[0]=http://www.coyotegulch.com/svfl.html
           SHORT="A library of C++ tools"
cat << EOF
A library of C++ tools:
Beyond Assert: Validation Tools for Design by Contract

I don't use the assert macro in professional C++ code; instead, I 
prefer something akin to Bertrand Meyer's Design by Contract, albeit 
with a strong C++ flavor. Beyond Assert introduces an exception-based 
validation systems I've developed for my own projects.

The Twisted Road to Randomness

Genetic algorithms, games, statistical tests, and simulations all rely on 
"random" numbers. Unfortunately, the built-in "random number" function 
is inadequate in algorithms where lots, and lots (and lots!) of random 
values need to be generated. Even a simple genetic algorithm requires 
thousands of random values -- and some of my application use billions of 
random numbers in their calculations. In such circumstances, a random 
number "generator" that produces repetitive or cyclical values is unlikely to produce satisfactory results. This article presents concepts, requirements, and algorithms for generating "random numbers", with a focus on linear congruential and Mersenne Twister algorithms.

A Maze of Concepts

I began with an idea for an experiment: Use genetic algorithms to evolve 
searching skills in software organisms; such research is applicable to many 
applications, including web searching and data mining. I've puttered about 
with several such algorithms, and wanted to move to a more complicated 
environment. This article describes classes for creating, drawing, and 
persisting 2D mazes in C++. 
EOF
