Files
harbour-core/harbour/contrib/hbtinymt/3rd/tinymt/tinymt.dif
Viktor Szakats bd2317b57c 2012-06-29 17:17 UTC+0200 Viktor Szakats (harbour syenar.net)
* contrib/hbtinymt/core64.c
    ! type fixes

  * contrib/hbtinymt/3rd/tinymt/tinymt.dif
  * contrib/hbtinymt/3rd/tinymt/tinymt64.h
    * msvc warning silenced
2012-06-29 15:18:33 +00:00

312 lines
10 KiB
Plaintext

diff -urN tinymt.orig\tinymt32.c tinymt\tinymt32.c
--- tinymt.orig\tinymt32.c Fri Jun 29 17:16:46 2012
+++ tinymt\tinymt32.c Fri Jun 29 17:16:46 2012
@@ -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 Fri Jun 29 17:16:46 2012
+++ tinymt\tinymt32.h Fri Jun 29 17:16:46 2012
@@ -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
@@ -48,12 +57,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
@@ -63,7 +72,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;
@@ -87,7 +96,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)
@@ -108,7 +117,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;
@@ -135,7 +144,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;
@@ -161,7 +170,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);
}
@@ -174,7 +183,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;
}
@@ -185,7 +194,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);
}
@@ -196,7 +205,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;
}
@@ -207,7 +216,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);
}
@@ -218,7 +227,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;
}
@@ -231,7 +240,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 Fri Jun 29 17:16:46 2012
+++ tinymt\tinymt64.c Fri Jun 29 17:16:46 2012
@@ -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 Fri Jun 29 17:16:46 2012
+++ tinymt\tinymt64.h Fri Jun 29 17:16:46 2012
@@ -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
@@ -48,12 +63,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
@@ -63,7 +79,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;
@@ -84,7 +100,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];
@@ -102,7 +118,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;
@@ -125,7 +141,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;
@@ -147,7 +163,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);
}
@@ -158,7 +174,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;
}
@@ -169,7 +185,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;
}
@@ -180,7 +196,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);
}
@@ -191,7 +207,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);
}
@@ -202,7 +218,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;
}