Next: , Previous: Animate Machines, Up: Introduction


1.5 System Requirements

Although the package source code can be adapted for use with many of available operating systems and compilers, the GNU/Linux system and GCC is a preferable combination to build the library and accompanying programs. The source code supports 32-bit and 64-bit build modes. The library had been tested to build and pass tests on MS Windows in Cygwin and MinGW/MSYS environments (a modern version of MinGW/MSYS environment should be used).

By default, the package uses a pseudorandom number generator implemented by function rand from the standard C library, which has the following drawbacks: (1) it is usually a very simple function, not intended to pass serious statistical tests for pseudorandom number generators; (2) streams of pseudorandom numbers returned by that function may vary on different platforms; (3) multiple instances of a pseudorandom number generator implemented by that function are only imitated and cannot be seeded separately. To solve these issues, the package can be configured to use a high-quality pseudorandom number generator provided by the GNU Scientific Library. There are no special requirements for a version of that library to use with the package—all recent versions can be used. QSMM starting from version 1.15 can also utilize a user-supplied random number generator, e.g. implemented by a developer by hand or which is a wrapper for a random number generator provided by another library.

The package uses the exponent function to compute relative probabilities of signal emitting. The absolute value of the argument of the exponent function sometimes can be big enough, which may cause the floating-point overflow (which yields infinity) or underflow (which yields 0). To minimize the number of such overflows and underflows during program execution, long double version of the exponent function expl is used instead of ordinary function exp on platforms where function expl and macro isfinite are available in the standard C library. If either or both of them are unavailable, then sporadic floating-point overflows and underflows shall not substantially decrease program efficiency.

However, if one considers that ordinary double precision is not sufficient, or if he makes modifications to the algorithm and overflows or underflows occur frequently even when long double precision is used, then the package can be configured to use MPFR and GNU MP libraries to solve these issues (former library depends on latter). There are no special requirements for a version of the MPFR library to use with the package—all recent versions can be used. A version of the GNU MP library should be used, which is compatible with a version of the MPFR library; see the documentation for the MPFR library for more information.

A few example programs included in the package distribution use the Curses library. On the GNU/Linux system and Cygwin it is the ncurses library. On MinGW/MSYS it is the pdcurses library. If you do not have the corresponding library on your system, the package can be configured to bypass building example programs that use it.

A number of example programs included in the package distribution use the POSIX threads API. On MinGW/MSYS building those example programs requires the use of an additional library that implements the API. If necessary, the package can be configured not to build the example programs.