@petamoriken/float16
Advanced tools
Comparing version 1.0.0 to 1.0.1
(function (exports) { | ||
'use strict'; | ||
// ftp://ftp.fox-toolkit.org/pub/fasthalffloatconversion.pdf | ||
const buffer = new ArrayBuffer(4); | ||
@@ -55,3 +57,2 @@ const floatView = new Float32Array(buffer); | ||
* @param {number} num | ||
* @see {@link ftp://ftp.fox-toolkit.org/pub/fasthalffloatconversion.pdf} | ||
*/ | ||
@@ -117,3 +118,2 @@ function roundToFloat16Bits(num) { | ||
* @param {number} h - half float number bits | ||
* @see {@link ftp://ftp.fox-toolkit.org/pub/fasthalffloatconversion.pdf} | ||
*/ | ||
@@ -1140,5 +1140,5 @@ function convertNumber(h) { | ||
// Chakra bug: https://github.com/Microsoft/ChakraCore/issues/1662 | ||
// Chakra (Edge <= 14) bug: https://github.com/Microsoft/ChakraCore/issues/1662 | ||
const proxy = new Proxy({}, {}); | ||
const isProxyEnableToBeWeakMapKey = new WeakMap().set(proxy, 1).get(proxy) === 1; | ||
const isProxyAbleToBeWeakMapKey = new WeakMap().set(proxy, 1).get(proxy) === 1; | ||
@@ -1203,3 +1203,3 @@ const _ = createPrivateStorage(); | ||
if(isFloat16Array(thisArg) && isDefaultFloat16ArrayMethods(func)) | ||
return Reflect.apply(func, isProxyEnableToBeWeakMapKey ? _(thisArg).target : thisArg[__target__], args); | ||
return Reflect.apply(func, isProxyAbleToBeWeakMapKey ? _(thisArg).target : thisArg[__target__], args); | ||
@@ -1266,3 +1266,3 @@ return Reflect.apply(func, thisArg, args); | ||
if(isFloat16Array(input)) { | ||
super(isProxyEnableToBeWeakMapKey ? _(input).target : input[__target__]); | ||
super(isProxyAbleToBeWeakMapKey ? _(input).target : input[__target__]); | ||
@@ -1313,3 +1313,3 @@ // 22.2.1.3, 22.2.1.4 TypedArray, Array, ArrayLike, Iterable | ||
// proxy private storage | ||
if(isProxyEnableToBeWeakMapKey) { | ||
if(isProxyAbleToBeWeakMapKey) { | ||
_(proxy).target = this; | ||
@@ -1506,3 +1506,3 @@ } else { | ||
if(isFloat16Array(input)) { | ||
float16bits = isProxyEnableToBeWeakMapKey ? _(input).target : input[__target__]; | ||
float16bits = isProxyAbleToBeWeakMapKey ? _(input).target : input[__target__]; | ||
@@ -1509,0 +1509,0 @@ // input others |
"use strict"; | ||
// JavaScriptCore bug: https://bugs.webkit.org/show_bug.cgi?id=171606 | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
// JavaScriptCore bug: https://bugs.webkit.org/show_bug.cgi?id=171606 | ||
const isTypedArrayIndexedPropertyWritable = exports.isTypedArrayIndexedPropertyWritable = Object.getOwnPropertyDescriptor(new Uint8Array(1), 0).writable; | ||
var isTypedArrayIndexedPropertyWritable = exports.isTypedArrayIndexedPropertyWritable = Object.getOwnPropertyDescriptor(new Uint8Array(1), 0).writable; | ||
// Chakra bug: https://github.com/Microsoft/ChakraCore/issues/1662 | ||
const proxy = new Proxy({}, {}); | ||
const isProxyEnableToBeWeakMapKey = exports.isProxyEnableToBeWeakMapKey = new WeakMap().set(proxy, 1).get(proxy) === 1; | ||
// Chakra (Edge <= 14) bug: https://github.com/Microsoft/ChakraCore/issues/1662 | ||
var proxy = new Proxy({}, {}); | ||
var isProxyAbleToBeWeakMapKey = exports.isProxyAbleToBeWeakMapKey = new WeakMap().set(proxy, 1).get(proxy) === 1; |
@@ -27,5 +27,5 @@ "use strict"; | ||
const _ = (0, _private.createPrivateStorage)(); | ||
var _ = (0, _private.createPrivateStorage)(); | ||
const __target__ = Symbol("target"); | ||
var __target__ = Symbol("target"); | ||
@@ -47,6 +47,6 @@ function isFloat16Array(target) { | ||
function copyToArray(float16bits) { | ||
const length = float16bits.length; | ||
var length = float16bits.length; | ||
const array = new Array(length); | ||
for (let i = 0; i < length; ++i) { | ||
var array = new Array(length); | ||
for (var i = 0; i < length; ++i) { | ||
array[i] = (0, _lib.convertNumber)(float16bits[i]); | ||
@@ -59,5 +59,5 @@ } | ||
// proxy handler | ||
const handler = { | ||
var handler = { | ||
get(target, key) { | ||
let wrapper = null; | ||
var wrapper = null; | ||
if (!_bug.isTypedArrayIndexedPropertyWritable) { | ||
@@ -71,3 +71,3 @@ wrapper = target; | ||
} else { | ||
const ret = wrapper !== null && Reflect.has(wrapper, key) ? Reflect.get(wrapper, key) : Reflect.get(target, key); | ||
var ret = wrapper !== null && Reflect.has(wrapper, key) ? Reflect.get(wrapper, key) : Reflect.get(target, key); | ||
@@ -77,3 +77,3 @@ if (typeof ret !== "function") return ret; | ||
// TypedArray methods can't be called by Proxy | ||
let proxy = _(ret).proxy; | ||
var proxy = _(ret).proxy; | ||
@@ -85,3 +85,3 @@ if (proxy === undefined) { | ||
// peel off proxy | ||
if (isFloat16Array(thisArg) && isDefaultFloat16ArrayMethods(func)) return Reflect.apply(func, _bug.isProxyEnableToBeWeakMapKey ? _(thisArg).target : thisArg[__target__], args); | ||
if (isFloat16Array(thisArg) && isDefaultFloat16ArrayMethods(func)) return Reflect.apply(func, _bug.isProxyAbleToBeWeakMapKey ? _(thisArg).target : thisArg[__target__], args); | ||
@@ -98,3 +98,3 @@ return Reflect.apply(func, thisArg, args); | ||
set(target, key, value) { | ||
let wrapper = null; | ||
var wrapper = null; | ||
if (!_bug.isTypedArrayIndexedPropertyWritable) { | ||
@@ -123,7 +123,7 @@ wrapper = target; | ||
handler.defineProperty = (wrapper, key, descriptor) => { | ||
const target = _(wrapper).target; | ||
var target = _(wrapper).target; | ||
return !Reflect.has(target, key) || Object.isFrozen(wrapper) ? Reflect.defineProperty(wrapper, key, descriptor) : Reflect.defineProperty(target, key, descriptor); | ||
}; | ||
handler.deleteProperty = (wrapper, key) => { | ||
const target = _(wrapper).target; | ||
var target = _(wrapper).target; | ||
return Reflect.has(wrapper, key) ? Reflect.deleteProperty(wrapper, key) : Reflect.deleteProperty(target, key); | ||
@@ -147,3 +147,3 @@ }; | ||
if (isFloat16Array(input)) { | ||
super(_bug.isProxyEnableToBeWeakMapKey ? _(input).target : input[__target__]); | ||
super(_bug.isProxyAbleToBeWeakMapKey ? _(input).target : input[__target__]); | ||
@@ -153,8 +153,8 @@ // 22.2.1.3, 22.2.1.4 TypedArray, Array, ArrayLike, Iterable | ||
// if input is Iterable, get Array | ||
const array = (0, _is.isArrayLike)(input) ? input : [...input]; | ||
var array = (0, _is.isArrayLike)(input) ? input : [...input]; | ||
const length = array.length; | ||
super(length); | ||
var _length = array.length; | ||
super(_length); | ||
for (let i = 0; i < length; ++i) { | ||
for (var i = 0; i < _length; ++i) { | ||
// super (Uint16Array) | ||
@@ -184,3 +184,3 @@ this[i] = (0, _lib.roundToFloat16Bits)(array[i]); | ||
let proxy; | ||
var proxy = void 0; | ||
@@ -190,3 +190,3 @@ if (_bug.isTypedArrayIndexedPropertyWritable) { | ||
} else { | ||
const wrapper = Object.create(null); | ||
var wrapper = Object.create(null); | ||
_(wrapper).target = this; | ||
@@ -197,3 +197,3 @@ proxy = new Proxy(wrapper, handler); | ||
// proxy private storage | ||
if (_bug.isProxyEnableToBeWeakMapKey) { | ||
if (_bug.isProxyAbleToBeWeakMapKey) { | ||
_(proxy).target = this; | ||
@@ -214,4 +214,4 @@ } else { | ||
const mapFunc = arguments.length <= 1 ? undefined : arguments[1]; | ||
const thisArg = arguments.length <= 2 ? undefined : arguments[2]; | ||
var mapFunc = arguments.length <= 1 ? undefined : arguments[1]; | ||
var thisArg = arguments.length <= 2 ? undefined : arguments[2]; | ||
@@ -243,3 +243,3 @@ return new Float16Array(Uint16Array.from(src, function (val) { | ||
for (var _iterator = super[Symbol.iterator]()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | ||
const val = _step.value; | ||
var val = _step.value; | ||
@@ -275,3 +275,3 @@ yield (0, _lib.convertNumber)(val); | ||
for (var _iterator2 = super.values()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { | ||
const val = _step2.value; | ||
var val = _step2.value; | ||
@@ -303,8 +303,8 @@ yield (0, _lib.convertNumber)(val); | ||
for (var _iterator3 = super.entries()[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { | ||
const _ref = _step3.value; | ||
var _ref = _step3.value; | ||
var _ref2 = (0, _slicedToArray3.default)(_ref, 2); | ||
const i = _ref2[0]; | ||
const val = _ref2[1]; | ||
var i = _ref2[0]; | ||
var val = _ref2[1]; | ||
@@ -333,7 +333,7 @@ yield [i, (0, _lib.convertNumber)(val)]; | ||
const thisArg = arguments.length <= 1 ? undefined : arguments[1]; | ||
var thisArg = arguments.length <= 1 ? undefined : arguments[1]; | ||
const array = []; | ||
for (let i = 0, l = this.length; i < l; ++i) { | ||
const val = (0, _lib.convertNumber)(this[i]); | ||
var array = []; | ||
for (var i = 0, l = this.length; i < l; ++i) { | ||
var val = (0, _lib.convertNumber)(this[i]); | ||
array.push(callback.call(thisArg, val, i, _(this).proxy)); | ||
@@ -348,7 +348,7 @@ } | ||
const thisArg = arguments.length <= 1 ? undefined : arguments[1]; | ||
var thisArg = arguments.length <= 1 ? undefined : arguments[1]; | ||
const array = []; | ||
for (let i = 0, l = this.length; i < l; ++i) { | ||
const val = (0, _lib.convertNumber)(this[i]); | ||
var array = []; | ||
for (var i = 0, l = this.length; i < l; ++i) { | ||
var val = (0, _lib.convertNumber)(this[i]); | ||
@@ -364,3 +364,4 @@ if (callback.call(thisArg, val, i, _(this).proxy)) array.push(val); | ||
let val, start; | ||
var val = void 0, | ||
start = void 0; | ||
@@ -375,3 +376,3 @@ if ((arguments.length <= 1 ? 0 : arguments.length - 1) === 0) { | ||
for (let i = start, l = this.length; i < l; ++i) { | ||
for (var i = start, l = this.length; i < l; ++i) { | ||
val = callback(val, (0, _lib.convertNumber)(this[i]), i, _(this).proxy); | ||
@@ -386,5 +387,6 @@ } | ||
let val, start; | ||
var val = void 0, | ||
start = void 0; | ||
const length = this.length; | ||
var length = this.length; | ||
if ((arguments.length <= 1 ? 0 : arguments.length - 1) === 0) { | ||
@@ -398,3 +400,3 @@ val = (0, _lib.convertNumber)(this[length - 1]); | ||
for (let i = start; i--;) { | ||
for (var i = start; i--;) { | ||
val = callback(val, (0, _lib.convertNumber)(this[i]), i, _(this).proxy); | ||
@@ -409,5 +411,5 @@ } | ||
const thisArg = arguments.length <= 1 ? undefined : arguments[1]; | ||
var thisArg = arguments.length <= 1 ? undefined : arguments[1]; | ||
for (let i = 0, l = this.length; i < l; ++i) { | ||
for (var i = 0, l = this.length; i < l; ++i) { | ||
callback.call(thisArg, (0, _lib.convertNumber)(this[i]), i, _(this).proxy); | ||
@@ -420,6 +422,6 @@ } | ||
const thisArg = arguments.length <= 1 ? undefined : arguments[1]; | ||
var thisArg = arguments.length <= 1 ? undefined : arguments[1]; | ||
for (let i = 0, l = this.length; i < l; ++i) { | ||
const value = (0, _lib.convertNumber)(this[i]); | ||
for (var i = 0, l = this.length; i < l; ++i) { | ||
var value = (0, _lib.convertNumber)(this[i]); | ||
if (callback.call(thisArg, value, i, _(this).proxy)) return value; | ||
@@ -432,6 +434,6 @@ } | ||
const thisArg = arguments.length <= 1 ? undefined : arguments[1]; | ||
var thisArg = arguments.length <= 1 ? undefined : arguments[1]; | ||
for (let i = 0, l = this.length; i < l; ++i) { | ||
const value = (0, _lib.convertNumber)(this[i]); | ||
for (var i = 0, l = this.length; i < l; ++i) { | ||
var value = (0, _lib.convertNumber)(this[i]); | ||
if (callback.call(thisArg, value, i, _(this).proxy)) return i; | ||
@@ -446,5 +448,5 @@ } | ||
const thisArg = arguments.length <= 1 ? undefined : arguments[1]; | ||
var thisArg = arguments.length <= 1 ? undefined : arguments[1]; | ||
for (let i = 0, l = this.length; i < l; ++i) { | ||
for (var i = 0, l = this.length; i < l; ++i) { | ||
if (!callback.call(thisArg, (0, _lib.convertNumber)(this[i]), i, _(this).proxy)) return false; | ||
@@ -459,5 +461,5 @@ } | ||
const thisArg = arguments.length <= 1 ? undefined : arguments[1]; | ||
var thisArg = arguments.length <= 1 ? undefined : arguments[1]; | ||
for (let i = 0, l = this.length; i < l; ++i) { | ||
for (var i = 0, l = this.length; i < l; ++i) { | ||
if (callback.call(thisArg, (0, _lib.convertNumber)(this[i]), i, _(this).proxy)) return true; | ||
@@ -473,17 +475,17 @@ } | ||
const offset = arguments.length <= 1 ? undefined : arguments[1]; | ||
var offset = arguments.length <= 1 ? undefined : arguments[1]; | ||
let float16bits; | ||
var float16bits = void 0; | ||
// input Float16Array | ||
if (isFloat16Array(input)) { | ||
float16bits = _bug.isProxyEnableToBeWeakMapKey ? _(input).target : input[__target__]; | ||
float16bits = _bug.isProxyAbleToBeWeakMapKey ? _(input).target : input[__target__]; | ||
// input others | ||
} else { | ||
const array = (0, _is.isArrayLike)(input) ? input : [...input]; | ||
const length = array.length; | ||
var array = (0, _is.isArrayLike)(input) ? input : [...input]; | ||
var length = array.length; | ||
float16bits = new Uint16Array(length); | ||
for (let i = 0, l = array.length; i < l; ++i) { | ||
for (var i = 0, l = array.length; i < l; ++i) { | ||
float16bits[i] = (0, _lib.roundToFloat16Bits)(array[i]); | ||
@@ -531,3 +533,3 @@ } | ||
let compareFunction = arguments.length <= 0 ? undefined : arguments[0]; | ||
var compareFunction = arguments.length <= 0 ? undefined : arguments[0]; | ||
@@ -538,3 +540,3 @@ if (compareFunction === undefined) { | ||
const _convertNumber = (0, _memoize2.default)(_lib.convertNumber); | ||
var _convertNumber = (0, _memoize2.default)(_lib.convertNumber); | ||
@@ -550,3 +552,3 @@ super.sort((x, y) => compareFunction(_convertNumber(x), _convertNumber(y))); | ||
let float16bits; | ||
var float16bits = void 0; | ||
@@ -558,3 +560,3 @@ // V8, SpiderMonkey, JavaScriptCore throw TypeError | ||
if (e instanceof TypeError) { | ||
const uint16 = new Uint16Array(this.buffer, this.byteOffset, this.length); | ||
var uint16 = new Uint16Array(this.buffer, this.byteOffset, this.length); | ||
float16bits = uint16.slice(...arguments); | ||
@@ -572,3 +574,3 @@ } else { | ||
let float16bits; | ||
var float16bits = void 0; | ||
@@ -580,3 +582,3 @@ // SpiderMonkey, JavaScriptCore throw TypeError | ||
if (e instanceof TypeError) { | ||
const uint16 = new Uint16Array(this.buffer, this.byteOffset, this.length); | ||
var uint16 = new Uint16Array(this.buffer, this.byteOffset, this.length); | ||
float16bits = uint16.subarray(...arguments); | ||
@@ -595,5 +597,5 @@ } else { | ||
const length = this.length; | ||
var length = this.length; | ||
let from = (0, _spec.ToInteger)(arguments.length <= 1 ? undefined : arguments[1]); | ||
var from = (0, _spec.ToInteger)(arguments.length <= 1 ? undefined : arguments[1]); | ||
@@ -605,3 +607,3 @@ if (from < 0) { | ||
for (let i = from, l = length; i < l; ++i) { | ||
for (var i = from, l = length; i < l; ++i) { | ||
if ((0, _lib.convertNumber)(this[i]) === element) return i; | ||
@@ -616,5 +618,5 @@ } | ||
const length = this.length; | ||
var length = this.length; | ||
let from = (0, _spec.ToInteger)(arguments.length <= 1 ? undefined : arguments[1]); | ||
var from = (0, _spec.ToInteger)(arguments.length <= 1 ? undefined : arguments[1]); | ||
@@ -629,3 +631,3 @@ from = from === 0 ? length : from + 1; | ||
for (let i = from; i--;) { | ||
for (var i = from; i--;) { | ||
if ((0, _lib.convertNumber)(this[i]) === element) return i; | ||
@@ -640,5 +642,5 @@ } | ||
const length = this.length; | ||
var length = this.length; | ||
let from = (0, _spec.ToInteger)(arguments.length <= 1 ? undefined : arguments[1]); | ||
var from = (0, _spec.ToInteger)(arguments.length <= 1 ? undefined : arguments[1]); | ||
@@ -650,5 +652,5 @@ if (from < 0) { | ||
const isNaN = Number.isNaN(element); | ||
for (let i = from, l = length; i < l; ++i) { | ||
const value = (0, _lib.convertNumber)(this[i]); | ||
var isNaN = Number.isNaN(element); | ||
for (var i = from, l = length; i < l; ++i) { | ||
var value = (0, _lib.convertNumber)(this[i]); | ||
@@ -667,3 +669,3 @@ if (isNaN && Number.isNaN(value)) return true; | ||
const array = copyToArray(this); | ||
var array = copyToArray(this); | ||
@@ -676,3 +678,3 @@ return array.join(...arguments); | ||
const array = copyToArray(this); | ||
var array = copyToArray(this); | ||
@@ -689,5 +691,5 @@ return array.toLocaleString(...arguments); | ||
exports.default = Float16Array; | ||
const Float16Array$prototype = Float16Array.prototype; | ||
var Float16Array$prototype = Float16Array.prototype; | ||
const defaultFloat16ArrayMethods = new WeakSet(); | ||
var defaultFloat16ArrayMethods = new WeakSet(); | ||
var _iteratorNormalCompletion4 = true; | ||
@@ -699,5 +701,5 @@ var _didIteratorError4 = false; | ||
for (var _iterator4 = Reflect.ownKeys(Float16Array$prototype)[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { | ||
const key = _step4.value; | ||
var key = _step4.value; | ||
const val = Float16Array$prototype[key]; | ||
var val = Float16Array$prototype[key]; | ||
if (typeof val === "function") defaultFloat16ArrayMethods.add(val); | ||
@@ -704,0 +706,0 @@ } |
@@ -22,5 +22,5 @@ "use strict"; | ||
const x16 = (0, _lib.roundToFloat16Bits)(num); | ||
var x16 = (0, _lib.roundToFloat16Bits)(num); | ||
return (0, _lib.convertNumber)(x16); | ||
} | ||
module.exports = exports["default"]; |
@@ -0,1 +1,3 @@ | ||
// ftp://ftp.fox-toolkit.org/pub/fasthalffloatconversion.pdf | ||
"use strict"; | ||
@@ -8,11 +10,11 @@ | ||
exports.convertNumber = convertNumber; | ||
const buffer = new ArrayBuffer(4); | ||
const floatView = new Float32Array(buffer); | ||
const uint32View = new Uint32Array(buffer); | ||
var buffer = new ArrayBuffer(4); | ||
var floatView = new Float32Array(buffer); | ||
var uint32View = new Uint32Array(buffer); | ||
const baseTable = new Uint32Array(512); | ||
const shiftTable = new Uint32Array(512); | ||
var baseTable = new Uint32Array(512); | ||
var shiftTable = new Uint32Array(512); | ||
for (let i = 0; i < 256; ++i) { | ||
const e = i - 127; | ||
for (var i = 0; i < 256; ++i) { | ||
var e = i - 127; | ||
@@ -59,3 +61,2 @@ // very small number (0, -0) | ||
* @param {number} num | ||
* @see {@link ftp://ftp.fox-toolkit.org/pub/fasthalffloatconversion.pdf} | ||
*/ | ||
@@ -65,20 +66,20 @@ function roundToFloat16Bits(num) { | ||
const f = uint32View[0]; | ||
const e = f >> 23 & 0x1ff; | ||
var f = uint32View[0]; | ||
var e = f >> 23 & 0x1ff; | ||
return baseTable[e] + ((f & 0x007fffff) >> shiftTable[e]); | ||
} | ||
const mantissaTable = new Uint32Array(2048); | ||
const exponentTable = new Uint32Array(64); | ||
const offsetTable = new Uint32Array(64); | ||
var mantissaTable = new Uint32Array(2048); | ||
var exponentTable = new Uint32Array(64); | ||
var offsetTable = new Uint32Array(64); | ||
// mantissa | ||
mantissaTable[0] = 0; | ||
for (let i = 1; i < 1024; ++i) { | ||
let m = i << 13; // zero pad mantissa bits | ||
let e = 0; // zero exponent | ||
for (var _i = 1; _i < 1024; ++_i) { | ||
var m = _i << 13; // zero pad mantissa bits | ||
var _e = 0; // zero exponent | ||
// normalized | ||
while ((m & 0x00800000) === 0) { | ||
e -= 0x00800000; // decrement exponent | ||
_e -= 0x00800000; // decrement exponent | ||
m <<= 1; | ||
@@ -88,8 +89,8 @@ } | ||
m &= ~0x00800000; // clear leading 1 bit | ||
e += 0x38800000; // adjust bias | ||
_e += 0x38800000; // adjust bias | ||
mantissaTable[i] = m | e; | ||
mantissaTable[_i] = m | _e; | ||
} | ||
for (let i = 1024; i < 2048; ++i) { | ||
mantissaTable[i] = 0x38000000 + (i - 1024 << 13); | ||
for (var _i2 = 1024; _i2 < 2048; ++_i2) { | ||
mantissaTable[_i2] = 0x38000000 + (_i2 - 1024 << 13); | ||
} | ||
@@ -99,9 +100,9 @@ | ||
exponentTable[0] = 0; | ||
for (let i = 1; i < 31; ++i) { | ||
exponentTable[i] = i << 23; | ||
for (var _i3 = 1; _i3 < 31; ++_i3) { | ||
exponentTable[_i3] = _i3 << 23; | ||
} | ||
exponentTable[31] = 0x47800000; | ||
exponentTable[32] = 0x80000000; | ||
for (let i = 33; i < 63; ++i) { | ||
exponentTable[i] = 0x80000000 + (i - 32 << 23); | ||
for (var _i4 = 33; _i4 < 63; ++_i4) { | ||
exponentTable[_i4] = 0x80000000 + (_i4 - 32 << 23); | ||
} | ||
@@ -112,7 +113,7 @@ exponentTable[63] = 0xc7800000; | ||
offsetTable[0] = 0; | ||
for (let i = 1; i < 64; ++i) { | ||
if (i === 32) { | ||
offsetTable[i] = 0; | ||
for (var _i5 = 1; _i5 < 64; ++_i5) { | ||
if (_i5 === 32) { | ||
offsetTable[_i5] = 0; | ||
} else { | ||
offsetTable[i] = 1024; | ||
offsetTable[_i5] = 1024; | ||
} | ||
@@ -124,8 +125,7 @@ } | ||
* @param {number} h - half float number bits | ||
* @see {@link ftp://ftp.fox-toolkit.org/pub/fasthalffloatconversion.pdf} | ||
*/ | ||
function convertNumber(h) { | ||
const m = h >> 10; | ||
var m = h >> 10; | ||
uint32View[0] = mantissaTable[offsetTable[m] + (h & 0x3ff)] + exponentTable[m]; | ||
return floatView[0]; | ||
} |
@@ -8,5 +8,5 @@ "use strict"; | ||
function createPrivateStorage() { | ||
const wm = new WeakMap(); | ||
var wm = new WeakMap(); | ||
return self => { | ||
let obj = wm.get(self); | ||
var obj = wm.get(self); | ||
if (obj) { | ||
@@ -13,0 +13,0 @@ return obj; |
@@ -18,5 +18,5 @@ "use strict"; | ||
function defaultCompareFunction(x, y) { | ||
var _ref = [Number.isNaN(x), Number.isNaN(y)]; | ||
const isNaN_x = _ref[0], | ||
isNaN_y = _ref[1]; | ||
var _ref = [Number.isNaN(x), Number.isNaN(y)], | ||
isNaN_x = _ref[0], | ||
isNaN_y = _ref[1]; | ||
@@ -35,5 +35,5 @@ | ||
if (x === 0 && y === 0) { | ||
var _ref2 = [(0, _is.isPlusZero)(x), (0, _is.isPlusZero)(y)]; | ||
const isPlusZero_x = _ref2[0], | ||
isPlusZero_y = _ref2[1]; | ||
var _ref2 = [(0, _is.isPlusZero)(x), (0, _is.isPlusZero)(y)], | ||
isPlusZero_x = _ref2[0], | ||
isPlusZero_y = _ref2[1]; | ||
@@ -40,0 +40,0 @@ |
{ | ||
"name": "@petamoriken/float16", | ||
"description": "half precision floating point for JavaScript", | ||
"version": "1.0.0", | ||
"version": "1.0.1", | ||
"main": "lib/index.js", | ||
@@ -29,3 +29,4 @@ "jsnext:main": "src/index.js", | ||
"browser", | ||
"test" | ||
"test", | ||
"nightwatch_custom" | ||
], | ||
@@ -54,3 +55,3 @@ "keywords": [ | ||
"test:lib": "mocha", | ||
"test:browser": "nightwatch -e chrome,chrome_old,firefox,firefox_old,edge,safari,safari_el", | ||
"test-browser": "nightwatch -e chrome,chrome_old,firefox,firefox_old,edge,safari,safari_el", | ||
"clean": "rm -rf lib browser docs/test/*.css docs/test/*.js docs/test/*.map", | ||
@@ -57,0 +58,0 @@ "refresh": "yarn run clean && yarn run build && yarn run docs", |
# float16 | ||
half precision floating point for JavaScript | ||
half precision floating point for JavaScript. | ||
see [ES Discuss Float16Array topic](https://esdiscuss.org/topic/float16array). | ||
@@ -116,4 +117,6 @@ [![license](https://img.shields.io/npm/l/@petamoriken/float16.svg?style=flat-square)](https://github.com/petamoriken/float16/blob/master/LICENSE) | ||
Export your Sauce Labs environment variable. | ||
Access [test page](https://petamoriken.github.io/float16/test) ([PowerAssert version](https://petamoriken.github.io/float16/test/power)). | ||
If you want to test in [Sauce Labs](https://saucelabs.com/), export environment variables. | ||
```console | ||
@@ -124,6 +127,12 @@ export SAUCE_USERNAME=<your Sauce Labs username> | ||
(optional) Export a test page URL (default: https://petamoriken.github.io/float16/test/power). | ||
```console | ||
export SAUCE_URL=<browser test url> | ||
``` | ||
Finally, exec below. | ||
```console | ||
yarn run test:browser | ||
yarn run test-browser | ||
``` |
@@ -0,6 +1,8 @@ | ||
"use strict"; | ||
// JavaScriptCore bug: https://bugs.webkit.org/show_bug.cgi?id=171606 | ||
export const isTypedArrayIndexedPropertyWritable = Object.getOwnPropertyDescriptor(new Uint8Array(1), 0).writable; | ||
// Chakra bug: https://github.com/Microsoft/ChakraCore/issues/1662 | ||
// Chakra (Edge <= 14) bug: https://github.com/Microsoft/ChakraCore/issues/1662 | ||
const proxy = new Proxy({}, {}); | ||
export const isProxyEnableToBeWeakMapKey = new WeakMap().set(proxy, 1).get(proxy) === 1; | ||
export const isProxyAbleToBeWeakMapKey = new WeakMap().set(proxy, 1).get(proxy) === 1; |
@@ -11,3 +11,3 @@ "use strict"; | ||
import { isTypedArrayIndexedPropertyWritable, isProxyEnableToBeWeakMapKey } from "./bug"; | ||
import { isTypedArrayIndexedPropertyWritable, isProxyAbleToBeWeakMapKey } from "./bug"; | ||
@@ -73,3 +73,3 @@ | ||
if(isFloat16Array(thisArg) && isDefaultFloat16ArrayMethods(func)) | ||
return Reflect.apply(func, isProxyEnableToBeWeakMapKey ? _(thisArg).target : thisArg[__target__], args); | ||
return Reflect.apply(func, isProxyAbleToBeWeakMapKey ? _(thisArg).target : thisArg[__target__], args); | ||
@@ -136,3 +136,3 @@ return Reflect.apply(func, thisArg, args); | ||
if(isFloat16Array(input)) { | ||
super(isProxyEnableToBeWeakMapKey ? _(input).target : input[__target__]); | ||
super(isProxyAbleToBeWeakMapKey ? _(input).target : input[__target__]); | ||
@@ -183,3 +183,3 @@ // 22.2.1.3, 22.2.1.4 TypedArray, Array, ArrayLike, Iterable | ||
// proxy private storage | ||
if(isProxyEnableToBeWeakMapKey) { | ||
if(isProxyAbleToBeWeakMapKey) { | ||
_(proxy).target = this; | ||
@@ -376,3 +376,3 @@ } else { | ||
if(isFloat16Array(input)) { | ||
float16bits = isProxyEnableToBeWeakMapKey ? _(input).target : input[__target__]; | ||
float16bits = isProxyAbleToBeWeakMapKey ? _(input).target : input[__target__]; | ||
@@ -379,0 +379,0 @@ // input others |
@@ -0,1 +1,3 @@ | ||
"use strict"; | ||
import hfround from "./hfround"; | ||
@@ -2,0 +4,0 @@ import Float16Array from "./Float16Array"; |
@@ -0,1 +1,3 @@ | ||
// ftp://ftp.fox-toolkit.org/pub/fasthalffloatconversion.pdf | ||
"use strict"; | ||
@@ -54,3 +56,2 @@ | ||
* @param {number} num | ||
* @see {@link ftp://ftp.fox-toolkit.org/pub/fasthalffloatconversion.pdf} | ||
*/ | ||
@@ -116,3 +117,2 @@ export function roundToFloat16Bits(num) { | ||
* @param {number} h - half float number bits | ||
* @see {@link ftp://ftp.fox-toolkit.org/pub/fasthalffloatconversion.pdf} | ||
*/ | ||
@@ -119,0 +119,0 @@ export function convertNumber(h) { |
@@ -0,1 +1,3 @@ | ||
"use strict"; | ||
export function createPrivateStorage() { | ||
@@ -2,0 +4,0 @@ const wm = new WeakMap(); |
@@ -0,1 +1,3 @@ | ||
"use strict"; | ||
import { isPlusZero } from "./is"; | ||
@@ -2,0 +4,0 @@ |
@@ -17,3 +17,3 @@ "use strict"; | ||
["browser test"](client) { | ||
client.url("https://petamoriken.github.io/float16/test/power") | ||
client.url(process.env.SAUCE_URL || "https://petamoriken.github.io/float16/test/power") | ||
.pause(1000); | ||
@@ -20,0 +20,0 @@ |
(function() { | ||
const isTypedArrayIndexedPropertyWritable = Object.getOwnPropertyDescriptor(new Uint8Array(1), 0).writable; | ||
const isProxyEnableToBeWeakMapKey = (function() { | ||
const isProxyAbleToBeWeakMapKey = (function() { | ||
const proxy = new Proxy({}, {}); | ||
@@ -183,3 +183,3 @@ return new WeakMap().set(proxy, 1).get(proxy) === 1; | ||
it("check ownKeys", function() { | ||
if(!isTypedArrayIndexedPropertyWritable || !isProxyEnableToBeWeakMapKey) | ||
if(!isTypedArrayIndexedPropertyWritable || !isProxyAbleToBeWeakMapKey) | ||
this.skip(); | ||
@@ -186,0 +186,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 2 instances in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
256570
34
3740
136
2