/**
 * \mainpage
 *
 * This is double precision SIMD oriented Fast Mersenne Twister pseudorandom
 * number generator (dSFMT).
 *
 * This program is based on the IEEE Standard for Binary
 * Floating-Point Arithmetic (ANSI/IEEE Std 754-1985) format.
 *
 * dSFMT ver. 2.xx is completely different from dSFMT ver. 1.xx.
 * The recursion formula is changed. And the output sequences
 * are changed.
 *
 * This version uses \b structure of C language.
 * Don't use different \b DSFMT_MEXP for compiling dSFMT.c and your program.
 *
 * This Project provides pseudorandom number generators of various
 * Mersenne Prime Period: from 2<sup>521</sup>-1 to
 * 2<sup>216091</sup>-1.
 *
 * To get dSFMT which has the period of 2<sup>521</sup>-1, you have to
 * specify -DMEXP=521 as a compile option. For example,
 * @verbatim
 gcc -DDSFMT_MEXP=521 -msse2 -DHAVE_SSE2 -c dSFMT.c
@endverbatim
 * will make dSFMT which has the period of 2<sup>521</sup>-1 and is
 * optimized for SSE2.
 *
 *   See <a href="howto-compile.html">How to compile</a> to compile
 *   your program with SFMT optimized for SIMD.
 *
 * - void dsfmt_init_gen_rand() initializes the generator with a 32-bit
 *   integer seed.
 * - void dsfmt_init_by_array() initializes the generator with an array of
 *   32-bit integers as the seeds.
 * - const char * dsfmt_get_idstring() returns the IDSTRING which identify
     the generator.
 * - int dsfmt_get_min_array_size() returns the minimum size of array used for
 *   \b fill_array functions.
 * - inline double dsfmt_genrand_close1_open2() generates and returns a
 *   double precision pseudorandom number which distributes uniformly
 *   in the range [1, 2).  This is the primitive and faster than
 *   generating numbers in other ranges.
 * - inline double dsfmt_genrand_close_open() generates and returns a double
 *   precision pseudorandom number which distributes uniformly in the
 *   range [0, 1).
 * - inline double dsfmt_genrand_open_close() generates and returns a double
 *   precision pseudorandom number which distributes uniformly in the
 *   range (0, 1].
 * - inline double dsfmt_genrand_open_open() generates and returns a double
 *   precision pseudorandom number which distributes uniformly in the
 *   range (0, 1).
 * - void dsfmt_fill_array_close1_open2() fills the user-specified array
 *   with double precision pseudorandom numbers which distribute
 *   uniformly in the range [1, 2).
 * - void dsfmt_fill_array_close_open() fills the user-specified array
 *   with double precision pseudorandom numbers which distribute
 *   uniformly in the range [0, 1).
 * - void dsfmt_fill_array_open_close() fills the user-specified array
 *   with double precision pseudorandom numbers which distribute
 *   uniformly in the range (0, 1].
 * - void dsfmt_fill_array_open_open() fills the user-specified array
 *   with double precision pseudorandom numbers which distribute
 *   function uniformly in the range (0, 1).
 * - uinit32_t dsfmt_genrand_uint32() generates and returns a 32 bit
 *   unsigned integer. This function is useful for generating a small number of
 *   integers among a large number of floating point numbers. This function
 *   does not have corresponding fill_array function, because the purpose of
 *   fill_array function is to generate a large number of pseudorandom numbers.
 *
 * Old names init_gen_rand, init_by_array, etc. are also defined unless
 * you define DSFMT_DO_NOT_USE_OLD_NAMES.
 *
 * @author Mutsuo Saito (saito\@our-domain) Hiroshima University
 * @author Makoto Matsumoto (m-mat\@our-domain) Hiroshima University
 *
 * Please change \b our-domain to \b math.sci.hiroshima-u.ac.jp
 *
 * @date 2012-06-29
 *
 * Copyright (C) 2007, 2008, 2009 Mutsuo Saito, Makoto Matsumoto and Hiroshima
 * University.
 * Copyright (c) 2011, 2012 Mutsuo Saito, Makoto Matsumoto, Hiroshima
 * University and The University of Tokyo.
 * All rights reserved.
 *
 * The new BSD License is applied to this software.
 * \verbinclude LICENSE.txt
 */
