// IEEE754 conversions based on https://github.com/feross/ieee754
+var global = require('../internals/global');
+
+var Array = global.Array;
var abs = Math.abs;
var pow = Math.pow;
var floor = Math.floor;
var LN2 = Math.LN2;
var pack = function (number, mantissaLength, bytes) {
- var buffer = new Array(bytes);
+ var buffer = Array(bytes);
var exponentLength = bytes * 8 - mantissaLength - 1;
var eMax = (1 << exponentLength) - 1;
var eBias = eMax >> 1;
exponent = eMax;
} else {
exponent = floor(log(number) / LN2);
- if (number * (c = pow(2, -exponent)) < 1) {
+ c = pow(2, -exponent);
+ if (number * c < 1) {
exponent--;
c *= 2;
}
exponent = 0;
}
}
- for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);
+ while (mantissaLength >= 8) {
+ buffer[index++] = mantissa & 255;
+ mantissa /= 256;
+ mantissaLength -= 8;
+ }
exponent = exponent << mantissaLength | mantissa;
exponentLength += mantissaLength;
- for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);
+ while (exponentLength > 0) {
+ buffer[index++] = exponent & 255;
+ exponent /= 256;
+ exponentLength -= 8;
+ }
buffer[--index] |= sign * 128;
return buffer;
};
var exponent = sign & 127;
var mantissa;
sign >>= 7;
- for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);
+ while (nBits > 0) {
+ exponent = exponent * 256 + buffer[index--];
+ nBits -= 8;
+ }
mantissa = exponent & (1 << -nBits) - 1;
exponent >>= -nBits;
nBits += mantissaLength;
- for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);
+ while (nBits > 0) {
+ mantissa = mantissa * 256 + buffer[index--];
+ nBits -= 8;
+ }
if (exponent === 0) {
exponent = 1 - eBias;
} else if (exponent === eMax) {