diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2006-11-06 19:52:32 -0500 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2006-11-06 19:52:32 -0500 |
commit | 02abca6b9e4e21d8d89eb83eabab3be8ac10c9d8 (patch) | |
tree | 6c923510076654885f31d2328c4853c5974699a8 /src/base/random.cc | |
parent | dd14c86ec8afb3a98d55a58eaafd8b85dd651bd6 (diff) | |
parent | bf3223d7ce681db8ca59dac49c6b44b672012e5d (diff) | |
download | gem5-02abca6b9e4e21d8d89eb83eabab3be8ac10c9d8.tar.xz |
Merge zizzer.eecs.umich.edu:/bk/newmem/
into zeep.eecs.umich.edu:/home/gblack/m5/newmemmemops
src/SConscript:
SCCS merged
--HG--
extra : convert_revision : f130c8a2d33f58d857e5d5a02bb9698c1bceb23b
Diffstat (limited to 'src/base/random.cc')
-rw-r--r-- | src/base/random.cc | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/base/random.cc b/src/base/random.cc index e135b55f5..82c9e3566 100644 --- a/src/base/random.cc +++ b/src/base/random.cc @@ -32,6 +32,10 @@ #include <cstdlib> #include <cmath> +#if defined(__sun__) +#include <ieeefp.h> +#endif + #include "sim/param.hh" #include "base/random.hh" #include "base/trace.hh" @@ -65,12 +69,27 @@ getLong() return mrand48(); } +double +m5round(double r) +{ +#if defined(__sun__) + double val; + fp_rnd oldrnd = fpsetround(FP_RN); + val = rint(r); + fpsetround(oldrnd); + return val; +#else + return round(r); +#endif +} + int64_t getUniform(int64_t min, int64_t max) { double r; r = drand48() * (max-min) + min; - return (int64_t)round(r); + + return (int64_t)m5round(r); } uint64_t @@ -78,7 +97,8 @@ getUniformPos(uint64_t min, uint64_t max) { double r; r = drand48() * (max-min) + min; - return (uint64_t)round(r); + + return (uint64_t)m5round(r); } |