|
"use strict"; |
|
|
|
module.exports = factory(factory); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function factory(exports) { |
|
|
|
|
|
if (typeof Float32Array !== "undefined") (function() { |
|
|
|
var f32 = new Float32Array([ -0 ]), |
|
f8b = new Uint8Array(f32.buffer), |
|
le = f8b[3] === 128; |
|
|
|
function writeFloat_f32_cpy(val, buf, pos) { |
|
f32[0] = val; |
|
buf[pos ] = f8b[0]; |
|
buf[pos + 1] = f8b[1]; |
|
buf[pos + 2] = f8b[2]; |
|
buf[pos + 3] = f8b[3]; |
|
} |
|
|
|
function writeFloat_f32_rev(val, buf, pos) { |
|
f32[0] = val; |
|
buf[pos ] = f8b[3]; |
|
buf[pos + 1] = f8b[2]; |
|
buf[pos + 2] = f8b[1]; |
|
buf[pos + 3] = f8b[0]; |
|
} |
|
|
|
|
|
exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev; |
|
|
|
exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy; |
|
|
|
function readFloat_f32_cpy(buf, pos) { |
|
f8b[0] = buf[pos ]; |
|
f8b[1] = buf[pos + 1]; |
|
f8b[2] = buf[pos + 2]; |
|
f8b[3] = buf[pos + 3]; |
|
return f32[0]; |
|
} |
|
|
|
function readFloat_f32_rev(buf, pos) { |
|
f8b[3] = buf[pos ]; |
|
f8b[2] = buf[pos + 1]; |
|
f8b[1] = buf[pos + 2]; |
|
f8b[0] = buf[pos + 3]; |
|
return f32[0]; |
|
} |
|
|
|
|
|
exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev; |
|
|
|
exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy; |
|
|
|
|
|
})(); else (function() { |
|
|
|
function writeFloat_ieee754(writeUint, val, buf, pos) { |
|
var sign = val < 0 ? 1 : 0; |
|
if (sign) |
|
val = -val; |
|
if (val === 0) |
|
writeUint(1 / val > 0 ? 0 : 2147483648, buf, pos); |
|
else if (isNaN(val)) |
|
writeUint(2143289344, buf, pos); |
|
else if (val > 3.4028234663852886e+38) |
|
writeUint((sign << 31 | 2139095040) >>> 0, buf, pos); |
|
else if (val < 1.1754943508222875e-38) |
|
writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos); |
|
else { |
|
var exponent = Math.floor(Math.log(val) / Math.LN2), |
|
mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607; |
|
writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos); |
|
} |
|
} |
|
|
|
exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE); |
|
exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE); |
|
|
|
function readFloat_ieee754(readUint, buf, pos) { |
|
var uint = readUint(buf, pos), |
|
sign = (uint >> 31) * 2 + 1, |
|
exponent = uint >>> 23 & 255, |
|
mantissa = uint & 8388607; |
|
return exponent === 255 |
|
? mantissa |
|
? NaN |
|
: sign * Infinity |
|
: exponent === 0 |
|
? sign * 1.401298464324817e-45 * mantissa |
|
: sign * Math.pow(2, exponent - 150) * (mantissa + 8388608); |
|
} |
|
|
|
exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE); |
|
exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE); |
|
|
|
})(); |
|
|
|
|
|
if (typeof Float64Array !== "undefined") (function() { |
|
|
|
var f64 = new Float64Array([-0]), |
|
f8b = new Uint8Array(f64.buffer), |
|
le = f8b[7] === 128; |
|
|
|
function writeDouble_f64_cpy(val, buf, pos) { |
|
f64[0] = val; |
|
buf[pos ] = f8b[0]; |
|
buf[pos + 1] = f8b[1]; |
|
buf[pos + 2] = f8b[2]; |
|
buf[pos + 3] = f8b[3]; |
|
buf[pos + 4] = f8b[4]; |
|
buf[pos + 5] = f8b[5]; |
|
buf[pos + 6] = f8b[6]; |
|
buf[pos + 7] = f8b[7]; |
|
} |
|
|
|
function writeDouble_f64_rev(val, buf, pos) { |
|
f64[0] = val; |
|
buf[pos ] = f8b[7]; |
|
buf[pos + 1] = f8b[6]; |
|
buf[pos + 2] = f8b[5]; |
|
buf[pos + 3] = f8b[4]; |
|
buf[pos + 4] = f8b[3]; |
|
buf[pos + 5] = f8b[2]; |
|
buf[pos + 6] = f8b[1]; |
|
buf[pos + 7] = f8b[0]; |
|
} |
|
|
|
|
|
exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev; |
|
|
|
exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy; |
|
|
|
function readDouble_f64_cpy(buf, pos) { |
|
f8b[0] = buf[pos ]; |
|
f8b[1] = buf[pos + 1]; |
|
f8b[2] = buf[pos + 2]; |
|
f8b[3] = buf[pos + 3]; |
|
f8b[4] = buf[pos + 4]; |
|
f8b[5] = buf[pos + 5]; |
|
f8b[6] = buf[pos + 6]; |
|
f8b[7] = buf[pos + 7]; |
|
return f64[0]; |
|
} |
|
|
|
function readDouble_f64_rev(buf, pos) { |
|
f8b[7] = buf[pos ]; |
|
f8b[6] = buf[pos + 1]; |
|
f8b[5] = buf[pos + 2]; |
|
f8b[4] = buf[pos + 3]; |
|
f8b[3] = buf[pos + 4]; |
|
f8b[2] = buf[pos + 5]; |
|
f8b[1] = buf[pos + 6]; |
|
f8b[0] = buf[pos + 7]; |
|
return f64[0]; |
|
} |
|
|
|
|
|
exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev; |
|
|
|
exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy; |
|
|
|
|
|
})(); else (function() { |
|
|
|
function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) { |
|
var sign = val < 0 ? 1 : 0; |
|
if (sign) |
|
val = -val; |
|
if (val === 0) { |
|
writeUint(0, buf, pos + off0); |
|
writeUint(1 / val > 0 ? 0 : 2147483648, buf, pos + off1); |
|
} else if (isNaN(val)) { |
|
writeUint(0, buf, pos + off0); |
|
writeUint(2146959360, buf, pos + off1); |
|
} else if (val > 1.7976931348623157e+308) { |
|
writeUint(0, buf, pos + off0); |
|
writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1); |
|
} else { |
|
var mantissa; |
|
if (val < 2.2250738585072014e-308) { |
|
mantissa = val / 5e-324; |
|
writeUint(mantissa >>> 0, buf, pos + off0); |
|
writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1); |
|
} else { |
|
var exponent = Math.floor(Math.log(val) / Math.LN2); |
|
if (exponent === 1024) |
|
exponent = 1023; |
|
mantissa = val * Math.pow(2, -exponent); |
|
writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0); |
|
writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1); |
|
} |
|
} |
|
} |
|
|
|
exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4); |
|
exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0); |
|
|
|
function readDouble_ieee754(readUint, off0, off1, buf, pos) { |
|
var lo = readUint(buf, pos + off0), |
|
hi = readUint(buf, pos + off1); |
|
var sign = (hi >> 31) * 2 + 1, |
|
exponent = hi >>> 20 & 2047, |
|
mantissa = 4294967296 * (hi & 1048575) + lo; |
|
return exponent === 2047 |
|
? mantissa |
|
? NaN |
|
: sign * Infinity |
|
: exponent === 0 |
|
? sign * 5e-324 * mantissa |
|
: sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496); |
|
} |
|
|
|
exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4); |
|
exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0); |
|
|
|
})(); |
|
|
|
return exports; |
|
} |
|
|
|
|
|
|
|
function writeUintLE(val, buf, pos) { |
|
buf[pos ] = val & 255; |
|
buf[pos + 1] = val >>> 8 & 255; |
|
buf[pos + 2] = val >>> 16 & 255; |
|
buf[pos + 3] = val >>> 24; |
|
} |
|
|
|
function writeUintBE(val, buf, pos) { |
|
buf[pos ] = val >>> 24; |
|
buf[pos + 1] = val >>> 16 & 255; |
|
buf[pos + 2] = val >>> 8 & 255; |
|
buf[pos + 3] = val & 255; |
|
} |
|
|
|
function readUintLE(buf, pos) { |
|
return (buf[pos ] |
|
| buf[pos + 1] << 8 |
|
| buf[pos + 2] << 16 |
|
| buf[pos + 3] << 24) >>> 0; |
|
} |
|
|
|
function readUintBE(buf, pos) { |
|
return (buf[pos ] << 24 |
|
| buf[pos + 1] << 16 |
|
| buf[pos + 2] << 8 |
|
| buf[pos + 3]) >>> 0; |
|
} |
|
|