Index: fusl/src/prng/drand48.c |
diff --git a/fusl/src/prng/drand48.c b/fusl/src/prng/drand48.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d808353c9872ebd1ae7dedd8dadff14c41b3a8ba |
--- /dev/null |
+++ b/fusl/src/prng/drand48.c |
@@ -0,0 +1,19 @@ |
+#include <stdlib.h> |
+#include <inttypes.h> |
+ |
+uint64_t __rand48_step(unsigned short *xi, unsigned short *lc); |
+extern unsigned short __seed48[7]; |
+ |
+double erand48(unsigned short s[3]) |
+{ |
+ union { |
+ uint64_t u; |
+ double f; |
+ } x = { 0x3ff0000000000000ULL | __rand48_step(s, __seed48+3)<<4 }; |
+ return x.f - 1.0; |
+} |
+ |
+double drand48(void) |
+{ |
+ return erand48(__seed48); |
+} |