ES6 Draft updated 14/05/2013 to include Math.imul - implementation from MDN