You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

828 lines
27 KiB

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.isFloat16Array = isFloat16Array;
var _arrayIterator = require("./_util/arrayIterator.cjs");
var _brand = require("./_util/brand.cjs");
var _converter = require("./_util/converter.cjs");
var _is = require("./_util/is.cjs");
var _messages = require("./_util/messages.cjs");
var _primordials = require("./_util/primordials.cjs");
var _spec = require("./_util/spec.cjs");
const BYTES_PER_ELEMENT = 2;
const float16bitsArrays = new _primordials.NativeWeakMap();
function isFloat16Array(target) {
return (0, _primordials.WeakMapPrototypeHas)(float16bitsArrays, target) || !(0, _primordials.ArrayBufferIsView)(target) && (0, _brand.hasFloat16ArrayBrand)(target);
}
function assertFloat16Array(target) {
if (!isFloat16Array(target)) {
throw (0, _primordials.NativeTypeError)(_messages.THIS_IS_NOT_A_FLOAT16ARRAY_OBJECT);
}
}
function assertSpeciesTypedArray(target, count) {
const isTargetFloat16Array = isFloat16Array(target);
const isTargetTypedArray = (0, _is.isNativeTypedArray)(target);
if (!isTargetFloat16Array && !isTargetTypedArray) {
throw (0, _primordials.NativeTypeError)(_messages.SPECIES_CONSTRUCTOR_DIDNT_RETURN_TYPEDARRAY_OBJECT);
}
if (typeof count === "number") {
let length;
if (isTargetFloat16Array) {
const float16bitsArray = getFloat16BitsArray(target);
length = (0, _primordials.TypedArrayPrototypeGetLength)(float16bitsArray);
} else {
length = (0, _primordials.TypedArrayPrototypeGetLength)(target);
}
if (length < count) {
throw (0, _primordials.NativeTypeError)(_messages.DERIVED_CONSTRUCTOR_CREATED_TYPEDARRAY_OBJECT_WHICH_WAS_TOO_SMALL_LENGTH);
}
}
if ((0, _is.isNativeBigIntTypedArray)(target)) {
throw (0, _primordials.NativeTypeError)(_messages.CANNOT_MIX_BIGINT_AND_OTHER_TYPES);
}
}
function getFloat16BitsArray(float16) {
const float16bitsArray = (0, _primordials.WeakMapPrototypeGet)(float16bitsArrays, float16);
if (float16bitsArray !== undefined) {
const buffer = (0, _primordials.TypedArrayPrototypeGetBuffer)(float16bitsArray);
if ((0, _spec.IsDetachedBuffer)(buffer)) {
throw (0, _primordials.NativeTypeError)(_messages.ATTEMPTING_TO_ACCESS_DETACHED_ARRAYBUFFER);
}
return float16bitsArray;
}
const buffer = float16.buffer;
if ((0, _spec.IsDetachedBuffer)(buffer)) {
throw (0, _primordials.NativeTypeError)(_messages.ATTEMPTING_TO_ACCESS_DETACHED_ARRAYBUFFER);
}
const cloned = (0, _primordials.ReflectConstruct)(Float16Array, [buffer, float16.byteOffset, float16.length], float16.constructor);
return (0, _primordials.WeakMapPrototypeGet)(float16bitsArrays, cloned);
}
function copyToArray(float16bitsArray) {
const length = (0, _primordials.TypedArrayPrototypeGetLength)(float16bitsArray);
const array = [];
for (let i = 0; i < length; ++i) {
array[i] = (0, _converter.convertToNumber)(float16bitsArray[i]);
}
return array;
}
const TypedArrayPrototypeGetters = new _primordials.NativeWeakSet();
for (const key of (0, _primordials.ReflectOwnKeys)(_primordials.TypedArrayPrototype)) {
if (key === _primordials.SymbolToStringTag) {
continue;
}
const descriptor = (0, _primordials.ReflectGetOwnPropertyDescriptor)(_primordials.TypedArrayPrototype, key);
if ((0, _primordials.ObjectHasOwn)(descriptor, "get") && typeof descriptor.get === "function") {
(0, _primordials.WeakSetPrototypeAdd)(TypedArrayPrototypeGetters, descriptor.get);
}
}
const handler = (0, _primordials.ObjectFreeze)({
get(target, key, receiver) {
if ((0, _is.isCanonicalIntegerIndexString)(key) && (0, _primordials.ObjectHasOwn)(target, key)) {
return (0, _converter.convertToNumber)((0, _primordials.ReflectGet)(target, key));
}
if ((0, _primordials.WeakSetPrototypeHas)(TypedArrayPrototypeGetters, (0, _primordials.ObjectPrototype__lookupGetter__)(target, key))) {
return (0, _primordials.ReflectGet)(target, key);
}
return (0, _primordials.ReflectGet)(target, key, receiver);
},
set(target, key, value, receiver) {
if ((0, _is.isCanonicalIntegerIndexString)(key) && (0, _primordials.ObjectHasOwn)(target, key)) {
return (0, _primordials.ReflectSet)(target, key, (0, _converter.roundToFloat16Bits)(value));
}
return (0, _primordials.ReflectSet)(target, key, value, receiver);
},
getOwnPropertyDescriptor(target, key) {
if ((0, _is.isCanonicalIntegerIndexString)(key) && (0, _primordials.ObjectHasOwn)(target, key)) {
const descriptor = (0, _primordials.ReflectGetOwnPropertyDescriptor)(target, key);
descriptor.value = (0, _converter.convertToNumber)(descriptor.value);
return descriptor;
}
return (0, _primordials.ReflectGetOwnPropertyDescriptor)(target, key);
},
defineProperty(target, key, descriptor) {
if ((0, _is.isCanonicalIntegerIndexString)(key) && (0, _primordials.ObjectHasOwn)(target, key) && (0, _primordials.ObjectHasOwn)(descriptor, "value")) {
descriptor.value = (0, _converter.roundToFloat16Bits)(descriptor.value);
return (0, _primordials.ReflectDefineProperty)(target, key, descriptor);
}
return (0, _primordials.ReflectDefineProperty)(target, key, descriptor);
}
});
class Float16Array {
constructor(input, _byteOffset, _length) {
let float16bitsArray;
if (isFloat16Array(input)) {
float16bitsArray = (0, _primordials.ReflectConstruct)(_primordials.NativeUint16Array, [getFloat16BitsArray(input)], new.target);
} else if ((0, _is.isObject)(input) && !(0, _is.isArrayBuffer)(input)) {
let list;
let length;
if ((0, _is.isNativeTypedArray)(input)) {
list = input;
length = (0, _primordials.TypedArrayPrototypeGetLength)(input);
const buffer = (0, _primordials.TypedArrayPrototypeGetBuffer)(input);
const BufferConstructor = !(0, _is.isSharedArrayBuffer)(buffer) ? (0, _spec.SpeciesConstructor)(buffer, _primordials.NativeArrayBuffer) : _primordials.NativeArrayBuffer;
if ((0, _spec.IsDetachedBuffer)(buffer)) {
throw (0, _primordials.NativeTypeError)(_messages.ATTEMPTING_TO_ACCESS_DETACHED_ARRAYBUFFER);
}
if ((0, _is.isNativeBigIntTypedArray)(input)) {
throw (0, _primordials.NativeTypeError)(_messages.CANNOT_MIX_BIGINT_AND_OTHER_TYPES);
}
const data = new BufferConstructor(length * BYTES_PER_ELEMENT);
float16bitsArray = (0, _primordials.ReflectConstruct)(_primordials.NativeUint16Array, [data], new.target);
} else {
const iterator = input[_primordials.SymbolIterator];
if (iterator != null && typeof iterator !== "function") {
throw (0, _primordials.NativeTypeError)(_messages.ITERATOR_PROPERTY_IS_NOT_CALLABLE);
}
if (iterator != null) {
if ((0, _is.isOrdinaryArray)(input)) {
list = input;
length = input.length;
} else {
list = [...input];
length = list.length;
}
} else {
list = input;
length = (0, _spec.ToLength)(list.length);
}
float16bitsArray = (0, _primordials.ReflectConstruct)(_primordials.NativeUint16Array, [length], new.target);
}
for (let i = 0; i < length; ++i) {
float16bitsArray[i] = (0, _converter.roundToFloat16Bits)(list[i]);
}
} else {
float16bitsArray = (0, _primordials.ReflectConstruct)(_primordials.NativeUint16Array, arguments, new.target);
}
const proxy = new _primordials.NativeProxy(float16bitsArray, handler);
(0, _primordials.WeakMapPrototypeSet)(float16bitsArrays, proxy, float16bitsArray);
return proxy;
}
static from(src, ...opts) {
const Constructor = this;
if (!(0, _primordials.ReflectHas)(Constructor, _brand.brand)) {
throw (0, _primordials.NativeTypeError)(_messages.THIS_CONSTRUCTOR_IS_NOT_A_SUBCLASS_OF_FLOAT16ARRAY);
}
if (Constructor === Float16Array) {
if (isFloat16Array(src) && opts.length === 0) {
const float16bitsArray = getFloat16BitsArray(src);
const uint16 = new _primordials.NativeUint16Array((0, _primordials.TypedArrayPrototypeGetBuffer)(float16bitsArray), (0, _primordials.TypedArrayPrototypeGetByteOffset)(float16bitsArray), (0, _primordials.TypedArrayPrototypeGetLength)(float16bitsArray));
return new Float16Array((0, _primordials.TypedArrayPrototypeGetBuffer)((0, _primordials.TypedArrayPrototypeSlice)(uint16)));
}
if (opts.length === 0) {
return new Float16Array((0, _primordials.TypedArrayPrototypeGetBuffer)((0, _primordials.Uint16ArrayFrom)(src, _converter.roundToFloat16Bits)));
}
const mapFunc = opts[0];
const thisArg = opts[1];
return new Float16Array((0, _primordials.TypedArrayPrototypeGetBuffer)((0, _primordials.Uint16ArrayFrom)(src, function (val, ...args) {
return (0, _converter.roundToFloat16Bits)((0, _primordials.ReflectApply)(mapFunc, this, [val, ...(0, _arrayIterator.safeIfNeeded)(args)]));
}, thisArg)));
}
let list;
let length;
const iterator = src[_primordials.SymbolIterator];
if (iterator != null && typeof iterator !== "function") {
throw (0, _primordials.NativeTypeError)(_messages.ITERATOR_PROPERTY_IS_NOT_CALLABLE);
}
if (iterator != null) {
if ((0, _is.isOrdinaryArray)(src)) {
list = src;
length = src.length;
} else if ((0, _is.isOrdinaryNativeTypedArray)(src)) {
list = src;
length = (0, _primordials.TypedArrayPrototypeGetLength)(src);
} else {
list = [...src];
length = list.length;
}
} else {
if (src == null) {
throw (0, _primordials.NativeTypeError)(_messages.CANNOT_CONVERT_UNDEFINED_OR_NULL_TO_OBJECT);
}
list = (0, _primordials.NativeObject)(src);
length = (0, _spec.ToLength)(list.length);
}
const array = new Constructor(length);
if (opts.length === 0) {
for (let i = 0; i < length; ++i) {
array[i] = list[i];
}
} else {
const mapFunc = opts[0];
const thisArg = opts[1];
for (let i = 0; i < length; ++i) {
array[i] = (0, _primordials.ReflectApply)(mapFunc, thisArg, [list[i], i]);
}
}
return array;
}
static of(...items) {
const Constructor = this;
if (!(0, _primordials.ReflectHas)(Constructor, _brand.brand)) {
throw (0, _primordials.NativeTypeError)(_messages.THIS_CONSTRUCTOR_IS_NOT_A_SUBCLASS_OF_FLOAT16ARRAY);
}
const length = items.length;
if (Constructor === Float16Array) {
const proxy = new Float16Array(length);
const float16bitsArray = getFloat16BitsArray(proxy);
for (let i = 0; i < length; ++i) {
float16bitsArray[i] = (0, _converter.roundToFloat16Bits)(items[i]);
}
return proxy;
}
const array = new Constructor(length);
for (let i = 0; i < length; ++i) {
array[i] = items[i];
}
return array;
}
keys() {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
return (0, _primordials.TypedArrayPrototypeKeys)(float16bitsArray);
}
values() {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
return (0, _arrayIterator.wrap)(function* () {
for (const val of (0, _primordials.TypedArrayPrototypeValues)(float16bitsArray)) {
yield (0, _converter.convertToNumber)(val);
}
}());
}
entries() {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
return (0, _arrayIterator.wrap)(function* () {
for (const [i, val] of (0, _primordials.TypedArrayPrototypeEntries)(float16bitsArray)) {
yield [i, (0, _converter.convertToNumber)(val)];
}
}());
}
at(index) {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
const length = (0, _primordials.TypedArrayPrototypeGetLength)(float16bitsArray);
const relativeIndex = (0, _spec.ToIntegerOrInfinity)(index);
const k = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;
if (k < 0 || k >= length) {
return;
}
return (0, _converter.convertToNumber)(float16bitsArray[k]);
}
map(callback, ...opts) {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
const length = (0, _primordials.TypedArrayPrototypeGetLength)(float16bitsArray);
const thisArg = opts[0];
const Constructor = (0, _spec.SpeciesConstructor)(float16bitsArray, Float16Array);
if (Constructor === Float16Array) {
const proxy = new Float16Array(length);
const array = getFloat16BitsArray(proxy);
for (let i = 0; i < length; ++i) {
const val = (0, _converter.convertToNumber)(float16bitsArray[i]);
array[i] = (0, _converter.roundToFloat16Bits)((0, _primordials.ReflectApply)(callback, thisArg, [val, i, this]));
}
return proxy;
}
const array = new Constructor(length);
assertSpeciesTypedArray(array, length);
for (let i = 0; i < length; ++i) {
const val = (0, _converter.convertToNumber)(float16bitsArray[i]);
array[i] = (0, _primordials.ReflectApply)(callback, thisArg, [val, i, this]);
}
return array;
}
filter(callback, ...opts) {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
const length = (0, _primordials.TypedArrayPrototypeGetLength)(float16bitsArray);
const thisArg = opts[0];
const kept = [];
for (let i = 0; i < length; ++i) {
const val = (0, _converter.convertToNumber)(float16bitsArray[i]);
if ((0, _primordials.ReflectApply)(callback, thisArg, [val, i, this])) {
(0, _primordials.ArrayPrototypePush)(kept, val);
}
}
const Constructor = (0, _spec.SpeciesConstructor)(float16bitsArray, Float16Array);
const array = new Constructor(kept);
assertSpeciesTypedArray(array);
return array;
}
reduce(callback, ...opts) {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
const length = (0, _primordials.TypedArrayPrototypeGetLength)(float16bitsArray);
if (length === 0 && opts.length === 0) {
throw (0, _primordials.NativeTypeError)(_messages.REDUCE_OF_EMPTY_ARRAY_WITH_NO_INITIAL_VALUE);
}
let accumulator, start;
if (opts.length === 0) {
accumulator = (0, _converter.convertToNumber)(float16bitsArray[0]);
start = 1;
} else {
accumulator = opts[0];
start = 0;
}
for (let i = start; i < length; ++i) {
accumulator = callback(accumulator, (0, _converter.convertToNumber)(float16bitsArray[i]), i, this);
}
return accumulator;
}
reduceRight(callback, ...opts) {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
const length = (0, _primordials.TypedArrayPrototypeGetLength)(float16bitsArray);
if (length === 0 && opts.length === 0) {
throw (0, _primordials.NativeTypeError)(_messages.REDUCE_OF_EMPTY_ARRAY_WITH_NO_INITIAL_VALUE);
}
let accumulator, start;
if (opts.length === 0) {
accumulator = (0, _converter.convertToNumber)(float16bitsArray[length - 1]);
start = length - 2;
} else {
accumulator = opts[0];
start = length - 1;
}
for (let i = start; i >= 0; --i) {
accumulator = callback(accumulator, (0, _converter.convertToNumber)(float16bitsArray[i]), i, this);
}
return accumulator;
}
forEach(callback, ...opts) {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
const length = (0, _primordials.TypedArrayPrototypeGetLength)(float16bitsArray);
const thisArg = opts[0];
for (let i = 0; i < length; ++i) {
(0, _primordials.ReflectApply)(callback, thisArg, [(0, _converter.convertToNumber)(float16bitsArray[i]), i, this]);
}
}
find(callback, ...opts) {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
const length = (0, _primordials.TypedArrayPrototypeGetLength)(float16bitsArray);
const thisArg = opts[0];
for (let i = 0; i < length; ++i) {
const value = (0, _converter.convertToNumber)(float16bitsArray[i]);
if ((0, _primordials.ReflectApply)(callback, thisArg, [value, i, this])) {
return value;
}
}
}
findIndex(callback, ...opts) {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
const length = (0, _primordials.TypedArrayPrototypeGetLength)(float16bitsArray);
const thisArg = opts[0];
for (let i = 0; i < length; ++i) {
const value = (0, _converter.convertToNumber)(float16bitsArray[i]);
if ((0, _primordials.ReflectApply)(callback, thisArg, [value, i, this])) {
return i;
}
}
return -1;
}
findLast(callback, ...opts) {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
const length = (0, _primordials.TypedArrayPrototypeGetLength)(float16bitsArray);
const thisArg = opts[0];
for (let i = length - 1; i >= 0; --i) {
const value = (0, _converter.convertToNumber)(float16bitsArray[i]);
if ((0, _primordials.ReflectApply)(callback, thisArg, [value, i, this])) {
return value;
}
}
}
findLastIndex(callback, ...opts) {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
const length = (0, _primordials.TypedArrayPrototypeGetLength)(float16bitsArray);
const thisArg = opts[0];
for (let i = length - 1; i >= 0; --i) {
const value = (0, _converter.convertToNumber)(float16bitsArray[i]);
if ((0, _primordials.ReflectApply)(callback, thisArg, [value, i, this])) {
return i;
}
}
return -1;
}
every(callback, ...opts) {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
const length = (0, _primordials.TypedArrayPrototypeGetLength)(float16bitsArray);
const thisArg = opts[0];
for (let i = 0; i < length; ++i) {
if (!(0, _primordials.ReflectApply)(callback, thisArg, [(0, _converter.convertToNumber)(float16bitsArray[i]), i, this])) {
return false;
}
}
return true;
}
some(callback, ...opts) {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
const length = (0, _primordials.TypedArrayPrototypeGetLength)(float16bitsArray);
const thisArg = opts[0];
for (let i = 0; i < length; ++i) {
if ((0, _primordials.ReflectApply)(callback, thisArg, [(0, _converter.convertToNumber)(float16bitsArray[i]), i, this])) {
return true;
}
}
return false;
}
set(input, ...opts) {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
const targetOffset = (0, _spec.ToIntegerOrInfinity)(opts[0]);
if (targetOffset < 0) {
throw (0, _primordials.NativeRangeError)(_messages.OFFSET_IS_OUT_OF_BOUNDS);
}
if (input == null) {
throw (0, _primordials.NativeTypeError)(_messages.CANNOT_CONVERT_UNDEFINED_OR_NULL_TO_OBJECT);
}
if ((0, _is.isNativeBigIntTypedArray)(input)) {
throw (0, _primordials.NativeTypeError)(_messages.CANNOT_MIX_BIGINT_AND_OTHER_TYPES);
}
if (isFloat16Array(input)) {
return (0, _primordials.TypedArrayPrototypeSet)(getFloat16BitsArray(this), getFloat16BitsArray(input), targetOffset);
}
if ((0, _is.isNativeTypedArray)(input)) {
const buffer = (0, _primordials.TypedArrayPrototypeGetBuffer)(input);
if ((0, _spec.IsDetachedBuffer)(buffer)) {
throw (0, _primordials.NativeTypeError)(_messages.ATTEMPTING_TO_ACCESS_DETACHED_ARRAYBUFFER);
}
}
const targetLength = (0, _primordials.TypedArrayPrototypeGetLength)(float16bitsArray);
const src = (0, _primordials.NativeObject)(input);
const srcLength = (0, _spec.ToLength)(src.length);
if (targetOffset === Infinity || srcLength + targetOffset > targetLength) {
throw (0, _primordials.NativeRangeError)(_messages.OFFSET_IS_OUT_OF_BOUNDS);
}
for (let i = 0; i < srcLength; ++i) {
float16bitsArray[i + targetOffset] = (0, _converter.roundToFloat16Bits)(src[i]);
}
}
reverse() {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
(0, _primordials.TypedArrayPrototypeReverse)(float16bitsArray);
return this;
}
fill(value, ...opts) {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
(0, _primordials.TypedArrayPrototypeFill)(float16bitsArray, (0, _converter.roundToFloat16Bits)(value), ...(0, _arrayIterator.safeIfNeeded)(opts));
return this;
}
copyWithin(target, start, ...opts) {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
(0, _primordials.TypedArrayPrototypeCopyWithin)(float16bitsArray, target, start, ...(0, _arrayIterator.safeIfNeeded)(opts));
return this;
}
sort(compareFn) {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
const sortCompare = compareFn !== undefined ? compareFn : _spec.defaultCompare;
(0, _primordials.TypedArrayPrototypeSort)(float16bitsArray, (x, y) => {
return sortCompare((0, _converter.convertToNumber)(x), (0, _converter.convertToNumber)(y));
});
return this;
}
slice(start, end) {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
const Constructor = (0, _spec.SpeciesConstructor)(float16bitsArray, Float16Array);
if (Constructor === Float16Array) {
const uint16 = new _primordials.NativeUint16Array((0, _primordials.TypedArrayPrototypeGetBuffer)(float16bitsArray), (0, _primordials.TypedArrayPrototypeGetByteOffset)(float16bitsArray), (0, _primordials.TypedArrayPrototypeGetLength)(float16bitsArray));
return new Float16Array((0, _primordials.TypedArrayPrototypeGetBuffer)((0, _primordials.TypedArrayPrototypeSlice)(uint16, start, end)));
}
const length = (0, _primordials.TypedArrayPrototypeGetLength)(float16bitsArray);
const relativeStart = (0, _spec.ToIntegerOrInfinity)(start);
const relativeEnd = end === undefined ? length : (0, _spec.ToIntegerOrInfinity)(end);
let k;
if (relativeStart === -Infinity) {
k = 0;
} else if (relativeStart < 0) {
k = length + relativeStart > 0 ? length + relativeStart : 0;
} else {
k = length < relativeStart ? length : relativeStart;
}
let final;
if (relativeEnd === -Infinity) {
final = 0;
} else if (relativeEnd < 0) {
final = length + relativeEnd > 0 ? length + relativeEnd : 0;
} else {
final = length < relativeEnd ? length : relativeEnd;
}
const count = final - k > 0 ? final - k : 0;
const array = new Constructor(count);
assertSpeciesTypedArray(array, count);
if (count === 0) {
return array;
}
const buffer = (0, _primordials.TypedArrayPrototypeGetBuffer)(float16bitsArray);
if ((0, _spec.IsDetachedBuffer)(buffer)) {
throw (0, _primordials.NativeTypeError)(_messages.ATTEMPTING_TO_ACCESS_DETACHED_ARRAYBUFFER);
}
let n = 0;
while (k < final) {
array[n] = (0, _converter.convertToNumber)(float16bitsArray[k]);
++k;
++n;
}
return array;
}
subarray(begin, end) {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
const Constructor = (0, _spec.SpeciesConstructor)(float16bitsArray, Float16Array);
const uint16 = new _primordials.NativeUint16Array((0, _primordials.TypedArrayPrototypeGetBuffer)(float16bitsArray), (0, _primordials.TypedArrayPrototypeGetByteOffset)(float16bitsArray), (0, _primordials.TypedArrayPrototypeGetLength)(float16bitsArray));
const uint16Subarray = (0, _primordials.TypedArrayPrototypeSubarray)(uint16, begin, end);
const array = new Constructor((0, _primordials.TypedArrayPrototypeGetBuffer)(uint16Subarray), (0, _primordials.TypedArrayPrototypeGetByteOffset)(uint16Subarray), (0, _primordials.TypedArrayPrototypeGetLength)(uint16Subarray));
assertSpeciesTypedArray(array);
return array;
}
indexOf(element, ...opts) {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
const length = (0, _primordials.TypedArrayPrototypeGetLength)(float16bitsArray);
let from = (0, _spec.ToIntegerOrInfinity)(opts[0]);
if (from === Infinity) {
return -1;
}
if (from < 0) {
from += length;
if (from < 0) {
from = 0;
}
}
for (let i = from; i < length; ++i) {
if ((0, _primordials.ObjectHasOwn)(float16bitsArray, i) && (0, _converter.convertToNumber)(float16bitsArray[i]) === element) {
return i;
}
}
return -1;
}
lastIndexOf(element, ...opts) {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
const length = (0, _primordials.TypedArrayPrototypeGetLength)(float16bitsArray);
let from = opts.length >= 1 ? (0, _spec.ToIntegerOrInfinity)(opts[0]) : length - 1;
if (from === -Infinity) {
return -1;
}
if (from >= 0) {
from = from < length - 1 ? from : length - 1;
} else {
from += length;
}
for (let i = from; i >= 0; --i) {
if ((0, _primordials.ObjectHasOwn)(float16bitsArray, i) && (0, _converter.convertToNumber)(float16bitsArray[i]) === element) {
return i;
}
}
return -1;
}
includes(element, ...opts) {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
const length = (0, _primordials.TypedArrayPrototypeGetLength)(float16bitsArray);
let from = (0, _spec.ToIntegerOrInfinity)(opts[0]);
if (from === Infinity) {
return false;
}
if (from < 0) {
from += length;
if (from < 0) {
from = 0;
}
}
const isNaN = (0, _primordials.NumberIsNaN)(element);
for (let i = from; i < length; ++i) {
const value = (0, _converter.convertToNumber)(float16bitsArray[i]);
if (isNaN && (0, _primordials.NumberIsNaN)(value)) {
return true;
}
if (value === element) {
return true;
}
}
return false;
}
join(separator) {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
const array = copyToArray(float16bitsArray);
return (0, _primordials.ArrayPrototypeJoin)(array, separator);
}
toLocaleString(...opts) {
assertFloat16Array(this);
const float16bitsArray = getFloat16BitsArray(this);
const array = copyToArray(float16bitsArray);
return (0, _primordials.ArrayPrototypeToLocaleString)(array, ...(0, _arrayIterator.safeIfNeeded)(opts));
}
get [_primordials.SymbolToStringTag]() {
if (isFloat16Array(this)) {
return "Float16Array";
}
}
}
exports.Float16Array = Float16Array;
(0, _primordials.ObjectDefineProperty)(Float16Array, "BYTES_PER_ELEMENT", {
value: BYTES_PER_ELEMENT
});
(0, _primordials.ObjectDefineProperty)(Float16Array, _brand.brand, {});
(0, _primordials.ReflectSetPrototypeOf)(Float16Array, _primordials.TypedArray);
const Float16ArrayPrototype = Float16Array.prototype;
(0, _primordials.ObjectDefineProperty)(Float16ArrayPrototype, "BYTES_PER_ELEMENT", {
value: BYTES_PER_ELEMENT
});
(0, _primordials.ObjectDefineProperty)(Float16ArrayPrototype, _primordials.SymbolIterator, {
value: Float16ArrayPrototype.values,
writable: true,
configurable: true
});
(0, _primordials.ReflectSetPrototypeOf)(Float16ArrayPrototype, _primordials.TypedArrayPrototype);