MCPcopy
hub / github.com/rollup/rollup / pack

Function pack

test/form/samples/supports-core-js/_expected.js:6137–6193  ·  view source on GitHub ↗
(number, mantissaLength, bytes)

Source from the content-addressed store, hash-verified

6135 var LN2 = Math.LN2;
6136
6137 var pack = function (number, mantissaLength, bytes) {
6138 var buffer = $Array(bytes);
6139 var exponentLength = bytes * 8 - mantissaLength - 1;
6140 var eMax = (1 << exponentLength) - 1;
6141 var eBias = eMax >> 1;
6142 var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;
6143 var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;
6144 var index = 0;
6145 var exponent, mantissa, c;
6146 number = abs(number);
6147 // eslint-disable-next-line no-self-compare -- NaN check
6148 if (number !== number || number === Infinity) {
6149 // eslint-disable-next-line no-self-compare -- NaN check
6150 mantissa = number !== number ? 1 : 0;
6151 exponent = eMax;
6152 } else {
6153 exponent = floor(log(number) / LN2);
6154 c = pow(2, -exponent);
6155 if (number * c < 1) {
6156 exponent--;
6157 c *= 2;
6158 }
6159 if (exponent + eBias >= 1) {
6160 number += rt / c;
6161 } else {
6162 number += rt * pow(2, 1 - eBias);
6163 }
6164 if (number * c >= 2) {
6165 exponent++;
6166 c /= 2;
6167 }
6168 if (exponent + eBias >= eMax) {
6169 mantissa = 0;
6170 exponent = eMax;
6171 } else if (exponent + eBias >= 1) {
6172 mantissa = (number * c - 1) * pow(2, mantissaLength);
6173 exponent += eBias;
6174 } else {
6175 mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);
6176 exponent = 0;
6177 }
6178 }
6179 while (mantissaLength >= 8) {
6180 buffer[index++] = mantissa & 255;
6181 mantissa /= 256;
6182 mantissaLength -= 8;
6183 }
6184 exponent = exponent << mantissaLength | mantissa;
6185 exponentLength += mantissaLength;
6186 while (exponentLength > 0) {
6187 buffer[index++] = exponent & 255;
6188 exponent /= 256;
6189 exponentLength -= 8;
6190 }
6191 buffer[index - 1] |= sign * 128;
6192 return buffer;
6193 };
6194

Callers

nothing calls this directly

Calls 2

powFunction · 0.85
logFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…