summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/ptmalloc/lran2.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/ptmalloc/lran2.h')
-rw-r--r--src/3rdparty/ptmalloc/lran2.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/3rdparty/ptmalloc/lran2.h b/src/3rdparty/ptmalloc/lran2.h
new file mode 100644
index 0000000000..cea9920282
--- /dev/null
+++ b/src/3rdparty/ptmalloc/lran2.h
@@ -0,0 +1,51 @@
+/* lran2.h
+ * by Wolfram Gloger 1996.
+ *
+ * A small, portable pseudo-random number generator.
+ */
+
+#ifndef _LRAN2_H
+#define _LRAN2_H
+
+#define LRAN2_MAX 714025l /* constants for portable */
+#define IA 1366l /* random number generator */
+#define IC 150889l /* (see e.g. `Numerical Recipes') */
+
+struct lran2_st {
+ long x, y, v[97];
+};
+
+static void
+lran2_init(struct lran2_st* d, long seed)
+{
+ long x;
+ int j;
+
+ x = (IC - seed) % LRAN2_MAX;
+ if(x < 0) x = -x;
+ for(j=0; j<97; j++) {
+ x = (IA*x + IC) % LRAN2_MAX;
+ d->v[j] = x;
+ }
+ d->x = (IA*x + IC) % LRAN2_MAX;
+ d->y = d->x;
+}
+
+#ifdef __GNUC__
+__inline__
+#endif
+static long
+lran2(struct lran2_st* d)
+{
+ int j = (d->y % 97);
+
+ d->y = d->v[j];
+ d->x = (IA*d->x + IC) % LRAN2_MAX;
+ d->v[j] = d->x;
+ return d->y;
+}
+
+#undef IA
+#undef IC
+
+#endif