diff options
author | maratek <maratek@google.com> | 2019-08-23 15:25:56 -0700 |
---|---|---|
committer | maratek <maratek@google.com> | 2019-08-23 15:25:56 -0700 |
commit | 8b5ab0e4dd70f449db52503f89cbb3767ccec38c (patch) | |
tree | 82c406078f23932c5019344f2d98c4e68d981cb8 /unsupported/Eigen/CXX11 | |
parent | 2fb24384c9c4d4c9e0c1ab7923985a90f2f1d5e4 (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')
-rw-r--r-- | unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h | 8 |
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 |