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:
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.