Next: Obtaining QSMM, Previous: Animate Machines, Up: Introduction [Contents][Index]

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 types. The library has been tested to build and pass tests on MS Windows in Cygwin and MinGW/MSYS environments (modern version of MinGW/MSYS environment should be used).

By default, the package uses a pseudorandom number generator implemented by the function `rand`

from the standard C library.
That function has the following drawbacks:

- – it is usually a very simple function, not intended to pass serious statistical tests for pseudorandom number generators;
- – streams of pseudorandom numbers returned by that function may vary on different platforms;
- – 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. Any recent version of the library can be used with the package; there is no special requirement or need to use specific version of the library with the package. 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 this exponent function sometimes can be large enough.
Such a large value may cause the floating-point overflow (which yields positive infinity) or underflow (which yields 0).
To minimize the number of such overflows and underflows during program execution, the long double version of the exponent function, `expl`

, is used instead of ordinary function `exp`

on platforms where the former function is available in the standard C library.
If that function is unavailable, then sporadic floating-point overflows and underflows shall not substantially decrease operating optimality of algorithms used in the package.

However, if a developer considers that ordinary double precision is not sufficient, or after making modifications to the algorithm overflows or underflows occur frequently even when long double precision is used, 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 compatible version of the GNU MP library should be used (see the documentation of MPFR library for more information).

A few example programs included in the package distribution use a curses library.
On the GNU/Linux system and Cygwin the `ncurses`

library is used.
On MinGW/MSYS the `pdcurses`

library is used.
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 additional library `libpthread`

that implements the API.
If necessary, the package can be configured not to build the example programs.

Next: Obtaining QSMM, Previous: Animate Machines, Up: Introduction [Contents][Index]