* /harbour/* -> /*
* moved whole Harbour source tree one level up to
avoid single 'harbour' top dir
312 lines
10 KiB
Plaintext
312 lines
10 KiB
Plaintext
diff -urN tinymt.orig\tinymt32.c tinymt\tinymt32.c
|
|
--- tinymt.orig\tinymt32.c Sat Feb 02 19:51:25 2013
|
|
+++ tinymt\tinymt32.c Sat Feb 02 19:51:25 2013
|
|
@@ -60,17 +60,18 @@
|
|
* @param seed a 32-bit unsigned integer used as a seed.
|
|
*/
|
|
void tinymt32_init(tinymt32_t * random, uint32_t seed) {
|
|
+ int i;
|
|
random->status[0] = seed;
|
|
random->status[1] = random->mat1;
|
|
random->status[2] = random->mat2;
|
|
random->status[3] = random->tmat;
|
|
- for (int i = 1; i < MIN_LOOP; i++) {
|
|
+ for (i = 1; i < MIN_LOOP; i++) {
|
|
random->status[i & 3] ^= i + UINT32_C(1812433253)
|
|
* (random->status[(i - 1) & 3]
|
|
^ (random->status[(i - 1) & 3] >> 30));
|
|
}
|
|
period_certification(random);
|
|
- for (int i = 0; i < PRE_LOOP; i++) {
|
|
+ for (i = 0; i < PRE_LOOP; i++) {
|
|
tinymt32_next_state(random);
|
|
}
|
|
}
|
|
diff -urN tinymt.orig\tinymt32.h tinymt\tinymt32.h
|
|
--- tinymt.orig\tinymt32.h Sat Feb 02 19:51:25 2013
|
|
+++ tinymt\tinymt32.h Sat Feb 02 19:51:25 2013
|
|
@@ -16,8 +16,17 @@
|
|
* LICENSE.txt
|
|
*/
|
|
|
|
-#include <stdint.h>
|
|
-#include <inttypes.h>
|
|
+#include "hbapi.h"
|
|
+
|
|
+#if defined( __BORLANDC__ )
|
|
+# pragma warn -inl
|
|
+#endif
|
|
+
|
|
+#if ! defined( UINT32_C )
|
|
+# define UINT32_C( val ) ( val##U )
|
|
+#endif
|
|
+#define uint32_t HB_U32
|
|
+#define int32_t HB_I32
|
|
|
|
#define TINYMT32_MEXP 127
|
|
#define TINYMT32_SH0 1
|
|
@@ -52,12 +61,12 @@
|
|
* @param random not used
|
|
* @return always 127
|
|
*/
|
|
-inline static int tinymt32_get_mexp(
|
|
+_HB_INLINE_ static int tinymt32_get_mexp(
|
|
tinymt32_t * random __attribute__((unused))) {
|
|
return TINYMT32_MEXP;
|
|
}
|
|
#else
|
|
-inline static int tinymt32_get_mexp(tinymt32_t * random) {
|
|
+_HB_INLINE_ static int tinymt32_get_mexp(tinymt32_t * random) {
|
|
return TINYMT32_MEXP;
|
|
}
|
|
#endif
|
|
@@ -67,7 +76,7 @@
|
|
* Users should not call this function directly.
|
|
* @param random tinymt internal status
|
|
*/
|
|
-inline static void tinymt32_next_state(tinymt32_t * random) {
|
|
+_HB_INLINE_ static void tinymt32_next_state(tinymt32_t * random) {
|
|
uint32_t x;
|
|
uint32_t y;
|
|
|
|
@@ -91,7 +100,7 @@
|
|
* @param random tinymt internal status
|
|
* @return 32-bit unsigned pseudorandom number
|
|
*/
|
|
-inline static uint32_t tinymt32_temper(tinymt32_t * random) {
|
|
+_HB_INLINE_ static uint32_t tinymt32_temper(tinymt32_t * random) {
|
|
uint32_t t0, t1;
|
|
t0 = random->status[3];
|
|
#if defined(LINEARITY_CHECK)
|
|
@@ -112,7 +121,7 @@
|
|
* @param random tinymt internal status
|
|
* @return floating point number r (1.0 <= r < 2.0)
|
|
*/
|
|
-inline static float tinymt32_temper_conv(tinymt32_t * random) {
|
|
+_HB_INLINE_ static float tinymt32_temper_conv(tinymt32_t * random) {
|
|
uint32_t t0, t1;
|
|
union {
|
|
uint32_t u;
|
|
@@ -139,7 +148,7 @@
|
|
* @param random tinymt internal status
|
|
* @return floating point number r (1.0 < r < 2.0)
|
|
*/
|
|
-inline static float tinymt32_temper_conv_open(tinymt32_t * random) {
|
|
+_HB_INLINE_ static float tinymt32_temper_conv_open(tinymt32_t * random) {
|
|
uint32_t t0, t1;
|
|
union {
|
|
uint32_t u;
|
|
@@ -165,7 +174,7 @@
|
|
* @param random tinymt internal status
|
|
* @return 32-bit unsigned integer r (0 <= r < 2^32)
|
|
*/
|
|
-inline static uint32_t tinymt32_generate_uint32(tinymt32_t * random) {
|
|
+_HB_INLINE_ static uint32_t tinymt32_generate_uint32(tinymt32_t * random) {
|
|
tinymt32_next_state(random);
|
|
return tinymt32_temper(random);
|
|
}
|
|
@@ -178,7 +187,7 @@
|
|
* @param random tinymt internal status
|
|
* @return floating point number r (0.0 <= r < 1.0)
|
|
*/
|
|
-inline static float tinymt32_generate_float(tinymt32_t * random) {
|
|
+_HB_INLINE_ static float tinymt32_generate_float(tinymt32_t * random) {
|
|
tinymt32_next_state(random);
|
|
return tinymt32_temper(random) * TINYMT32_MUL;
|
|
}
|
|
@@ -189,7 +198,7 @@
|
|
* @param random tinymt internal status
|
|
* @return floating point number r (1.0 <= r < 2.0)
|
|
*/
|
|
-inline static float tinymt32_generate_float12(tinymt32_t * random) {
|
|
+_HB_INLINE_ static float tinymt32_generate_float12(tinymt32_t * random) {
|
|
tinymt32_next_state(random);
|
|
return tinymt32_temper_conv(random);
|
|
}
|
|
@@ -200,7 +209,7 @@
|
|
* @param random tinymt internal status
|
|
* @return floating point number r (0.0 <= r < 1.0)
|
|
*/
|
|
-inline static float tinymt32_generate_float01(tinymt32_t * random) {
|
|
+_HB_INLINE_ static float tinymt32_generate_float01(tinymt32_t * random) {
|
|
tinymt32_next_state(random);
|
|
return tinymt32_temper_conv(random) - 1.0f;
|
|
}
|
|
@@ -211,7 +220,7 @@
|
|
* @param random tinymt internal status
|
|
* @return floating point number r (0.0 < r <= 1.0)
|
|
*/
|
|
-inline static float tinymt32_generate_floatOC(tinymt32_t * random) {
|
|
+_HB_INLINE_ static float tinymt32_generate_floatOC(tinymt32_t * random) {
|
|
tinymt32_next_state(random);
|
|
return 1.0f - tinymt32_generate_float(random);
|
|
}
|
|
@@ -222,7 +231,7 @@
|
|
* @param random tinymt internal status
|
|
* @return floating point number r (0.0 < r < 0.0)
|
|
*/
|
|
-inline static float tinymt32_generate_floatOO(tinymt32_t * random) {
|
|
+_HB_INLINE_ static float tinymt32_generate_floatOO(tinymt32_t * random) {
|
|
tinymt32_next_state(random);
|
|
return tinymt32_temper_conv_open(random) - 1.0f;
|
|
}
|
|
@@ -235,7 +244,7 @@
|
|
* @param random tinymt internal status
|
|
* @return floating point number r (1.0 < r < 2.0)
|
|
*/
|
|
-inline static double tinymt32_generate_32double(tinymt32_t * random) {
|
|
+_HB_INLINE_ static double tinymt32_generate_32double(tinymt32_t * random) {
|
|
tinymt32_next_state(random);
|
|
return tinymt32_temper(random) * (1.0 / 4294967296.0);
|
|
}
|
|
diff -urN tinymt.orig\tinymt64.c tinymt\tinymt64.c
|
|
--- tinymt.orig\tinymt64.c Sat Feb 02 19:51:25 2013
|
|
+++ tinymt\tinymt64.c Sat Feb 02 19:51:25 2013
|
|
@@ -56,9 +56,10 @@
|
|
* @param seed a 64-bit unsigned integer used as a seed.
|
|
*/
|
|
void tinymt64_init(tinymt64_t * random, uint64_t seed) {
|
|
+ int i;
|
|
random->status[0] = seed ^ ((uint64_t)random->mat1 << 32);
|
|
random->status[1] = random->mat2 ^ random->tmat;
|
|
- for (int i = 1; i < MIN_LOOP; i++) {
|
|
+ for (i = 1; i < MIN_LOOP; i++) {
|
|
random->status[i & 1] ^= i + UINT64_C(6364136223846793005)
|
|
* (random->status[(i - 1) & 1]
|
|
^ (random->status[(i - 1) & 1] >> 62));
|
|
diff -urN tinymt.orig\tinymt64.h tinymt\tinymt64.h
|
|
--- tinymt.orig\tinymt64.h Sat Feb 02 19:51:25 2013
|
|
+++ tinymt\tinymt64.h Sat Feb 02 19:51:25 2013
|
|
@@ -16,8 +16,23 @@
|
|
* LICENSE.txt
|
|
*/
|
|
|
|
-#include <stdint.h>
|
|
-#include <inttypes.h>
|
|
+#include "hbapi.h"
|
|
+
|
|
+#if defined( __BORLANDC__ )
|
|
+# pragma warn -inl
|
|
+#endif
|
|
+
|
|
+#if ! defined( UINT32_C )
|
|
+# define UINT32_C( val ) ( val##U )
|
|
+#endif
|
|
+#define uint32_t HB_U32
|
|
+#define int32_t HB_I32
|
|
+
|
|
+#if ! defined( UINT64_C )
|
|
+# define UINT64_C( val ) HB_ULL( val )
|
|
+#endif
|
|
+#define uint64_t HB_U64
|
|
+#define int64_t HB_I64
|
|
|
|
#define TINYMT64_MEXP 127
|
|
#define TINYMT64_SH0 12
|
|
@@ -52,12 +67,13 @@
|
|
* @param random not used
|
|
* @return always 127
|
|
*/
|
|
-inline static int tinymt64_get_mexp(
|
|
+_HB_INLINE_ static int tinymt64_get_mexp(
|
|
tinymt64_t * random __attribute__((unused))) {
|
|
return TINYMT64_MEXP;
|
|
}
|
|
#else
|
|
-inline static int tinymt64_get_mexp(tinymt64_t * random) {
|
|
+_HB_INLINE_ static int tinymt64_get_mexp(tinymt64_t * random) {
|
|
+ ( void ) random;
|
|
return TINYMT64_MEXP;
|
|
}
|
|
#endif
|
|
@@ -67,7 +83,7 @@
|
|
* Users should not call this function directly.
|
|
* @param random tinymt internal status
|
|
*/
|
|
-inline static void tinymt64_next_state(tinymt64_t * random) {
|
|
+_HB_INLINE_ static void tinymt64_next_state(tinymt64_t * random) {
|
|
uint64_t x;
|
|
|
|
random->status[0] &= TINYMT64_MASK;
|
|
@@ -88,7 +104,7 @@
|
|
* @param random tinymt internal status
|
|
* @return 64-bit unsigned pseudorandom number
|
|
*/
|
|
-inline static uint64_t tinymt64_temper(tinymt64_t * random) {
|
|
+_HB_INLINE_ static uint64_t tinymt64_temper(tinymt64_t * random) {
|
|
uint64_t x;
|
|
#if defined(LINEARITY_CHECK)
|
|
x = random->status[0] ^ random->status[1];
|
|
@@ -106,7 +122,7 @@
|
|
* @param random tinymt internal status
|
|
* @return floating point number r (1.0 <= r < 2.0)
|
|
*/
|
|
-inline static double tinymt64_temper_conv(tinymt64_t * random) {
|
|
+_HB_INLINE_ static double tinymt64_temper_conv(tinymt64_t * random) {
|
|
uint64_t x;
|
|
union {
|
|
uint64_t u;
|
|
@@ -129,7 +145,7 @@
|
|
* @param random tinymt internal status
|
|
* @return floating point number r (1.0 < r < 2.0)
|
|
*/
|
|
-inline static double tinymt64_temper_conv_open(tinymt64_t * random) {
|
|
+_HB_INLINE_ static double tinymt64_temper_conv_open(tinymt64_t * random) {
|
|
uint64_t x;
|
|
union {
|
|
uint64_t u;
|
|
@@ -151,7 +167,7 @@
|
|
* @param random tinymt internal status
|
|
* @return 64-bit unsigned integer r (0 <= r < 2^64)
|
|
*/
|
|
-inline static uint64_t tinymt64_generate_uint64(tinymt64_t * random) {
|
|
+_HB_INLINE_ static uint64_t tinymt64_generate_uint64(tinymt64_t * random) {
|
|
tinymt64_next_state(random);
|
|
return tinymt64_temper(random);
|
|
}
|
|
@@ -162,7 +178,7 @@
|
|
* @param random tinymt internal status
|
|
* @return floating point number r (0.0 <= r < 1.0)
|
|
*/
|
|
-inline static double tinymt64_generate_double(tinymt64_t * random) {
|
|
+_HB_INLINE_ static double tinymt64_generate_double(tinymt64_t * random) {
|
|
tinymt64_next_state(random);
|
|
return tinymt64_temper(random) * TINYMT64_MUL;
|
|
}
|
|
@@ -173,7 +189,7 @@
|
|
* @param random tinymt internal status
|
|
* @return floating point number r (0.0 <= r < 1.0)
|
|
*/
|
|
-inline static double tinymt64_generate_double01(tinymt64_t * random) {
|
|
+_HB_INLINE_ static double tinymt64_generate_double01(tinymt64_t * random) {
|
|
tinymt64_next_state(random);
|
|
return tinymt64_temper_conv(random) - 1.0;
|
|
}
|
|
@@ -184,7 +200,7 @@
|
|
* @param random tinymt internal status
|
|
* @return floating point number r (1.0 <= r < 2.0)
|
|
*/
|
|
-inline static double tinymt64_generate_double12(tinymt64_t * random) {
|
|
+_HB_INLINE_ static double tinymt64_generate_double12(tinymt64_t * random) {
|
|
tinymt64_next_state(random);
|
|
return tinymt64_temper_conv(random);
|
|
}
|
|
@@ -195,7 +211,7 @@
|
|
* @param random tinymt internal status
|
|
* @return floating point number r (0.0 < r <= 1.0)
|
|
*/
|
|
-inline static double tinymt64_generate_doubleOC(tinymt64_t * random) {
|
|
+_HB_INLINE_ static double tinymt64_generate_doubleOC(tinymt64_t * random) {
|
|
tinymt64_next_state(random);
|
|
return 2.0 - tinymt64_temper_conv(random);
|
|
}
|
|
@@ -206,7 +222,7 @@
|
|
* @param random tinymt internal status
|
|
* @return floating point number r (0.0 < r < 1.0)
|
|
*/
|
|
-inline static double tinymt64_generate_doubleOO(tinymt64_t * random) {
|
|
+_HB_INLINE_ static double tinymt64_generate_doubleOO(tinymt64_t * random) {
|
|
tinymt64_next_state(random);
|
|
return tinymt64_temper_conv_open(random) - 1.0;
|
|
}
|