aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2014-01-30 14:02:14 -0800
committerAlon Zakai <alonzakai@gmail.com>2014-01-30 14:02:14 -0800
commitc14cab62df1353f966d4f201d9d0a1c51de784e1 (patch)
tree9b0faecef397b0f8c7a24eb89a6338cb84937690
parent64d52bf3633b99a0a911b7b1be2bb14d77f21584 (diff)
use Math.imul in rand_r
-rw-r--r--src/library.js9
1 files changed, 1 insertions, 8 deletions
diff --git a/src/library.js b/src/library.js
index bd34ac29..b4da994e 100644
--- a/src/library.js
+++ b/src/library.js
@@ -3455,14 +3455,7 @@ LibraryManager.library = {
rand_r__deps: ['__rand_seed'],
rand_r: function(seedp) {
var val = {{{ makeGetValue('seedp', 0, 'i32') }}};
- // calculate val * 31010991 + 0x676e6177
- // i32 multiplication will be rounded by javascript
- var valh = val >> 16;
- var vall = val & 0xffff;
- var c = 31010991;
- var ch = c >> 16;
- var cl = c & 0xffff;
- val = (((valh * cl + vall * ch) << 16) + vall * cl + 0x676e6177) & 0xffffffff;
+ val = (Math.imul(val, 31010991) + 0x676e6177)|0;
{{{ makeSetValue('seedp', 0, 'val', 'i32') }}};
return val;
},