aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h
diff options
context:
space:
mode:
authorGravatar maratek <maratek@google.com>2019-08-23 15:25:56 -0700
committerGravatar maratek <maratek@google.com>2019-08-23 15:25:56 -0700
commit8b5ab0e4dd70f449db52503f89cbb3767ccec38c (patch)
tree82c406078f23932c5019344f2d98c4e68d981cb8 /unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h
parent2fb24384c9c4d4c9e0c1ab7923985a90f2f1d5e4 (diff)
Fix get_random_seed on Native Client
Newlib in Native Client SDK does not provide ::random function. Implement get_random_seed for NaCl using ::rand, similarly to Windows version.
Diffstat (limited to 'unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h')
-rw-r--r--unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h b/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h
index 2be4f9cc5..445248163 100644
--- a/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h
+++ b/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h
@@ -45,6 +45,14 @@ EIGEN_DEVICE_FUNC uint64_t get_random_seed() {
uint64_t rnd = ::random() ^ mach_absolute_time();
return rnd;
+#elif defined __native_client__
+ // Same approach as for win32, except using clock_gettime
+ timespec ts;
+ clock_gettime(CLOCK_REALTIME, &ts);
+ int rnd1 = ::rand();
+ int rnd2 = ::rand();
+ uint64_t rnd = (rnd1 | rnd2 << 16) ^ ts.tv_nsec;
+ return rnd;
#else
// Augment the current time with pseudo random number generation