| 'use strict'; | 
| var $ = require('../internals/export'); | 
| var fails = require('../internals/fails'); | 
|   | 
| // eslint-disable-next-line es/no-math-imul -- required for testing | 
| var $imul = Math.imul; | 
|   | 
| var FORCED = fails(function () { | 
|   return $imul(0xFFFFFFFF, 5) !== -5 || $imul.length !== 2; | 
| }); | 
|   | 
| // `Math.imul` method | 
| // https://tc39.es/ecma262/#sec-math.imul | 
| // some WebKit versions fails with big numbers, some has wrong arity | 
| $({ target: 'Math', stat: true, forced: FORCED }, { | 
|   imul: function imul(x, y) { | 
|     var UINT16 = 0xFFFF; | 
|     var xn = +x; | 
|     var yn = +y; | 
|     var xl = UINT16 & xn; | 
|     var yl = UINT16 & yn; | 
|     return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0); | 
|   } | 
| }); |