cc [ flags ] -I/usr/local/include file(s) -L/usr/local/lib -lmcw [ ... ] #include <mathcw.h> extern float lrcwf (float a, float b); extern double lrcw (double a, double b); extern long double lrcwl (long double a, long double b); extern __float80 lrcww (__float80 a, __float80 b); extern __float128 lrcwq (__float128 a, __float128 b); extern long_long_double lrcwll (long_long_double a, long_long_double b); extern decimal_float lrcwdf (decimal_float a, decimal_float b); extern decimal_double lrcwd (decimal_double a, decimal_double b); extern decimal_long_double lrcwdl (decimal_long_double a, decimal_long_double b); extern decimal_long_long_double lrcwdll (decimal_long_long_double a, decimal_long_long_double b);
NB: Functions with prototypes containing underscores in type names may be available only with certain extended compilers.
The generator state is kept internally to simplify the user interface. However, this is not safe in multithreaded programs. For them, use the reentrant generator routines instead, identified by the suffix _r. The reentrant routines also make possible families of independent generators within the same program.
Execution is fastest when the arguments remain fixed over a series of calls, since recomputation of their logarithms can then be avoided.
Because floating-point numbers are logarithmically distributed, the best way to produce random test values for function arguments in a given range is to use a function like lrcw(), rather than scaling the results from a generator like urcw() for a uniform distribution.