libdieharder - Man Page

A testing and benchmarking library for random number generators

Synopsis

#include dieharder.h

void run_user_template()
{

Test **user_template_test;
/*
* Create the test
*/
user_template_test = create_test(&user_template_dtest,tsamples,psamples,&user_template);

/*
* Set any GLOBAL data used by the test.
*/
user_template_lag = (int)x_user;

/*
* Show the standard test header
*/
show_test_header(&user_template_dtest,user_template_test);

/*
* Call the test
*/
std_test(&user_template_dtest,user_template_test);

/*
* This almost certainly belongs in the show_test_results section,
* possibly with additional conditionals rejecting test results involving
* rewinds, period.
*/
if(strncmp(
 printf( # %u rands were used in this test0,file_input_get_rtot(rng));"
 printf( # The file %s was rewound %u times0,gsl_rng_name(rng),file_input_get_rewind_cnt(rng));"
}

/*
* Show standard test results
*/ .
show_test_results(&user_template_dtest,user_template_test);

}

Description

libdieharder

The libdieharder library provides an API to user interface programs wishing to call dieharder tests.  Commands are defined for creating tests, initializing the tests and running the tests.  Showing the results is of course the responsibility of the UI.

libdieharder also wraps certain additional random number generators so that they can be tested.  libdieharder can be default test all the random number generators in the Gnu Scientific Library plus these additional generators (which include "generators" for reading in numbers from a file).

libdieharder is extensible.  It is fairly easy to add additional test "objects" or random number generators using existing sources as templates.

The API will be documented in more detail as the project approaches completion.  In the meantime, it is strongly recommended that users wishing to call the library use the source of the dieharder tty UI as a template and list of all currently supported objects, as this is the primary libdieharder debugging vehicle in addition to being the current "standard" application of the library.

Publication Rules

libdieharder is entirely original code and can be modified and used at will by any  user, provided that:

 a) The original copyright notices are maintained and that the source, including all modifications, is made publically available at the time of any derived publication.  This is open source software according to the precepts and spirit of the Gnu Public License.  See the accompanying file COPYING, which also must accompany any redistribution.

 b) The author of the code (Robert G. Brown) is appropriately acknowledged and referenced in any derived publication.  It is strongly suggested that George Marsaglia and the Diehard suite and the various  authors of the Statistical Test Suite be similarly acknowledged, although  this suite shares no actual code with these random number test suites.

 c) Full responsibility for the accuracy, suitability, and effectiveness of the program rests with the users and/or modifiers.  As is clearly stated in the accompanying copyright.h:

THE Copyright HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL THE Copyright HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

Acknowledgements

The author of this suite gratefully acknowledges George Marsaglia (the author of the diehard test suite) and the various authors of NIST Special Publication 800-22 (which describes the Statistical Test Suite for testing pseudorandom number generators for cryptographic applications), for excellent descriptions of the tests therein.  These descriptions enabled this suite to be developed with a clean copyright, licensable under the GPL.

The author also wishes to reiterate that the academic correctness and  accuracy of the implementation of these tests is his sole responsibility  and not that of the authors of the Diehard or STS suites.  This is especially true where he has seen fit to modify those tests from their strict original descriptions.

Info

Copyright 2006 Robert G. Brown