18#if defined(__MINGW32__) || _MSC_VER
22X_API
void init_random(
void);
24static short a1 = 27314, b1 = 9213, c1 = 17773;
26static YAP_Bool p_random(
void) {
30 t1 = (a1 * 171) % 30269;
31 t2 = (b1 * 172) % 30307;
32 t3 = (c1 * 170) % 30323;
33 fli = (t1 / 30269.0) + (t2 / 30307.0) + (t3 / 30323.0);
37 return (YAP_Unify(YAP_ARG1, YAP_MkFloatTerm(fli - (
int)(fli))));
40static YAP_Bool p_setrand(
void) {
41 a1 = YAP_IntOfTerm(YAP_ARG1);
42 b1 = YAP_IntOfTerm(YAP_ARG2);
43 c1 = YAP_IntOfTerm(YAP_ARG3);
47static YAP_Bool p_getrand(
void) {
48 return (YAP_Unify(YAP_ARG1, YAP_MkIntTerm(a1)) &&
49 YAP_Unify(YAP_ARG2, YAP_MkIntTerm(b1)) &&
50 YAP_Unify(YAP_ARG3, YAP_MkIntTerm(c1)));
53X_API
void init_random(
void) {
54 YAP_UserCPredicate(
"random", p_random, 1);
55 YAP_UserCPredicate(
"setrand", p_setrand, 3);
56 YAP_UserCPredicate(
"getrand", p_getrand, 3);
61int WINAPI win_random(HANDLE, DWORD, LPVOID);
63int WINAPI win_random(HANDLE hinst, DWORD reason, LPVOID reserved) {
65 case DLL_PROCESS_ATTACH:
67 case DLL_PROCESS_DETACH:
69 case DLL_THREAD_ATTACH:
71 case DLL_THREAD_DETACH: