@@ -25,7 +25,7 @@ <h1><a href="index.html">All files</a> main.js</h1>
2525 < div class ='fl pad1y space-right2 '>
2626 < span class ="strong "> 100% </ span >
2727 < span class ="quiet "> Statements</ span >
28- < span class ='fraction '> 144/144 </ span >
28+ < span class ='fraction '> 172/172 </ span >
2929 </ div >
3030
3131
@@ -39,14 +39,14 @@ <h1><a href="index.html">All files</a> main.js</h1>
3939 < div class ='fl pad1y space-right2 '>
4040 < span class ="strong "> 100% </ span >
4141 < span class ="quiet "> Functions</ span >
42- < span class ='fraction '> 2/2 </ span >
42+ < span class ='fraction '> 1/1 </ span >
4343 </ div >
4444
4545
4646 < div class ='fl pad1y space-right2 '>
4747 < span class ="strong "> 100% </ span >
4848 < span class ="quiet "> Lines</ span >
49- < span class ='fraction '> 144/144 </ span >
49+ < span class ='fraction '> 172/172 </ span >
5050 </ div >
5151
5252
@@ -207,7 +207,35 @@ <h1><a href="index.html">All files</a> main.js</h1>
207207< a name ='L142 '> </ a > < a href ='#L142 '> 142</ a >
208208< a name ='L143 '> </ a > < a href ='#L143 '> 143</ a >
209209< a name ='L144 '> </ a > < a href ='#L144 '> 144</ a >
210- < a name ='L145 '> </ a > < a href ='#L145 '> 145</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 1x</ span >
210+ < a name ='L145 '> </ a > < a href ='#L145 '> 145</ a >
211+ < a name ='L146 '> </ a > < a href ='#L146 '> 146</ a >
212+ < a name ='L147 '> </ a > < a href ='#L147 '> 147</ a >
213+ < a name ='L148 '> </ a > < a href ='#L148 '> 148</ a >
214+ < a name ='L149 '> </ a > < a href ='#L149 '> 149</ a >
215+ < a name ='L150 '> </ a > < a href ='#L150 '> 150</ a >
216+ < a name ='L151 '> </ a > < a href ='#L151 '> 151</ a >
217+ < a name ='L152 '> </ a > < a href ='#L152 '> 152</ a >
218+ < a name ='L153 '> </ a > < a href ='#L153 '> 153</ a >
219+ < a name ='L154 '> </ a > < a href ='#L154 '> 154</ a >
220+ < a name ='L155 '> </ a > < a href ='#L155 '> 155</ a >
221+ < a name ='L156 '> </ a > < a href ='#L156 '> 156</ a >
222+ < a name ='L157 '> </ a > < a href ='#L157 '> 157</ a >
223+ < a name ='L158 '> </ a > < a href ='#L158 '> 158</ a >
224+ < a name ='L159 '> </ a > < a href ='#L159 '> 159</ a >
225+ < a name ='L160 '> </ a > < a href ='#L160 '> 160</ a >
226+ < a name ='L161 '> </ a > < a href ='#L161 '> 161</ a >
227+ < a name ='L162 '> </ a > < a href ='#L162 '> 162</ a >
228+ < a name ='L163 '> </ a > < a href ='#L163 '> 163</ a >
229+ < a name ='L164 '> </ a > < a href ='#L164 '> 164</ a >
230+ < a name ='L165 '> </ a > < a href ='#L165 '> 165</ a >
231+ < a name ='L166 '> </ a > < a href ='#L166 '> 166</ a >
232+ < a name ='L167 '> </ a > < a href ='#L167 '> 167</ a >
233+ < a name ='L168 '> </ a > < a href ='#L168 '> 168</ a >
234+ < a name ='L169 '> </ a > < a href ='#L169 '> 169</ a >
235+ < a name ='L170 '> </ a > < a href ='#L170 '> 170</ a >
236+ < a name ='L171 '> </ a > < a href ='#L171 '> 171</ a >
237+ < a name ='L172 '> </ a > < a href ='#L172 '> 172</ a >
238+ < a name ='L173 '> </ a > < a href ='#L173 '> 173</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 1x</ span >
211239< span class ="cline-any cline-yes "> 1x</ span >
212240< span class ="cline-any cline-yes "> 1x</ span >
213241< span class ="cline-any cline-yes "> 1x</ span >
@@ -253,33 +281,61 @@ <h1><a href="index.html">All files</a> main.js</h1>
253281< span class ="cline-any cline-yes "> 1x</ span >
254282< span class ="cline-any cline-yes "> 1x</ span >
255283< span class ="cline-any cline-yes "> 1x</ span >
256- < span class ="cline-any cline-yes "> 17x</ span >
257- < span class ="cline-any cline-yes "> 17x</ span >
258284< span class ="cline-any cline-yes "> 1x</ span >
259285< span class ="cline-any cline-yes "> 1x</ span >
260- < span class ="cline-any cline-yes "> 17x</ span >
261- < span class ="cline-any cline-yes "> 8x</ span >
262- < span class ="cline-any cline-yes "> 8x</ span >
263- < span class ="cline-any cline-yes "> 8x</ span >
264- < span class ="cline-any cline-yes "> 8x</ span >
265- < span class ="cline-any cline-yes "> 8x</ span >
266- < span class ="cline-any cline-yes "> 8x</ span >
267- < span class ="cline-any cline-yes "> 8x</ span >
268- < span class ="cline-any cline-yes "> 8x</ span >
269- < span class ="cline-any cline-yes "> 8x</ span >
270- < span class ="cline-any cline-yes "> 8x</ span >
271- < span class ="cline-any cline-yes "> 8x</ span >
272- < span class ="cline-any cline-yes "> 8x</ span >
273- < span class ="cline-any cline-yes "> 8x</ span >
274- < span class ="cline-any cline-yes "> 8x</ span >
275- < span class ="cline-any cline-yes "> 8x</ span >
276- < span class ="cline-any cline-yes "> 8x</ span >
277- < span class ="cline-any cline-yes "> 8x</ span >
278- < span class ="cline-any cline-yes "> 8x</ span >
279- < span class ="cline-any cline-yes "> 8x</ span >
286+ < span class ="cline-any cline-yes "> 1x</ span >
287+ < span class ="cline-any cline-yes "> 26x</ span >
288+ < span class ="cline-any cline-yes "> 26x</ span >
289+ < span class ="cline-any cline-yes "> 1x</ span >
290+ < span class ="cline-any cline-yes "> 1x</ span >
291+ < span class ="cline-any cline-yes "> 26x</ span >
280292< span class ="cline-any cline-yes "> 8x</ span >
281293< span class ="cline-any cline-yes "> 8x</ span >
282294< span class ="cline-any cline-yes "> 17x</ span >
295+ < span class ="cline-any cline-yes "> 17x</ span >
296+ < span class ="cline-any cline-yes "> 17x</ span >
297+ < span class ="cline-any cline-yes "> 17x</ span >
298+ < span class ="cline-any cline-yes "> 17x</ span >
299+ < span class ="cline-any cline-yes "> 17x</ span >
300+ < span class ="cline-any cline-yes "> 17x</ span >
301+ < span class ="cline-any cline-yes "> 17x</ span >
302+ < span class ="cline-any cline-yes "> 17x</ span >
303+ < span class ="cline-any cline-yes "> 26x</ span >
304+ < span class ="cline-any cline-yes "> 1x</ span >
305+ < span class ="cline-any cline-yes "> 1x</ span >
306+ < span class ="cline-any cline-yes "> 1x</ span >
307+ < span class ="cline-any cline-yes "> 1x</ span >
308+ < span class ="cline-any cline-yes "> 1x</ span >
309+ < span class ="cline-any cline-yes "> 1x</ span >
310+ < span class ="cline-any cline-yes "> 1x</ span >
311+ < span class ="cline-any cline-yes "> 1x</ span >
312+ < span class ="cline-any cline-yes "> 1x</ span >
313+ < span class ="cline-any cline-yes "> 1x</ span >
314+ < span class ="cline-any cline-yes "> 1x</ span >
315+ < span class ="cline-any cline-yes "> 1x</ span >
316+ < span class ="cline-any cline-yes "> 1x</ span >
317+ < span class ="cline-any cline-yes "> 1x</ span >
318+ < span class ="cline-any cline-yes "> 1x</ span >
319+ < span class ="cline-any cline-yes "> 1x</ span >
320+ < span class ="cline-any cline-yes "> 1x</ span >
321+ < span class ="cline-any cline-yes "> 1x</ span >
322+ < span class ="cline-any cline-yes "> 1x</ span >
323+ < span class ="cline-any cline-yes "> 1x</ span >
324+ < span class ="cline-any cline-yes "> 1x</ span >
325+ < span class ="cline-any cline-yes "> 1x</ span >
326+ < span class ="cline-any cline-yes "> 1x</ span >
327+ < span class ="cline-any cline-yes "> 1x</ span >
328+ < span class ="cline-any cline-yes "> 1x</ span >
329+ < span class ="cline-any cline-yes "> 1x</ span >
330+ < span class ="cline-any cline-yes "> 1x</ span >
331+ < span class ="cline-any cline-yes "> 1x</ span >
332+ < span class ="cline-any cline-yes "> 1x</ span >
333+ < span class ="cline-any cline-yes "> 1x</ span >
334+ < span class ="cline-any cline-yes "> 1x</ span >
335+ < span class ="cline-any cline-yes "> 1x</ span >
336+ < span class ="cline-any cline-yes "> 1x</ span >
337+ < span class ="cline-any cline-yes "> 1x</ span >
338+ < span class ="cline-any cline-yes "> 1x</ span >
283339< span class ="cline-any cline-yes "> 1x</ span >
284340< span class ="cline-any cline-yes "> 1x</ span >
285341< span class ="cline-any cline-yes "> 1x</ span >
@@ -378,8 +434,11 @@ <h1><a href="index.html">All files</a> main.js</h1>
378434var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );
379435var float64ToFloat16 = require( '@stdlib/number/float64/base/to-float16' );
380436var format = require( '@stdlib/string/format' );
437+ var hasToPrimitiveSymbolSupport = require( '@stdlib/assert/has-to-primitive-symbol-support' );
438+ var ToPrimitiveSymbol = require( '@stdlib/symbol/to-primitive' );
381439var toStr = require( './tostring.js' );
382440var toJSON = require( './tojson.js' );
441+ var valueOf = require( './valueof.js' ); // eslint-disable-line stdlib/no-redeclare
383442
384443
385444// MAIN //
@@ -402,36 +461,26 @@ <h1><a href="index.html">All files</a> main.js</h1>
402461 throw new TypeError( 'invalid invocation. Constructor must be called with the `new` keyword.' );
403462 }
404463 if ( !isNumber( value ) ) {
405- throw new TypeError( format( 'invalid argument. Value must be a number. Value: `%s`.', value ) );
464+ throw new TypeError( format( 'invalid argument. Must provide a number. Value: `%s`.', value ) );
406465 }
407466
408- // Store as uint16 bits (internal representation)
409- defineProperty( this, '_bits', {
410- 'configurable': false,
411- 'enumerable': false,
412- 'writable': false,
413- 'value': float64ToFloat16( value )
414- });
415-
416- // Define read-only value property that converts back to number
417467 defineProperty( this, 'value', {
418468 'configurable': false,
419469 'enumerable': true,
420- 'get': function getValue() { // eslint-disable-line no-restricted-syntax
421- return this._bits;
422- }
470+ 'writable': false,
471+ 'value': float64ToFloat16( value )
423472 });
424473
425474 return this;
426475}
427476
428477/**
429- * Size (in bytes) of each component .
478+ * Size (in bytes) of the underlying value .
430479*
431480* @name BYTES_PER_ELEMENT
432481* @memberof Float16
433482* @type {integer}
434- * @returns {integer} size of each component
483+ * @returns {integer} size in bytes
435484*
436485* @example
437486* var nbytes = Float16.BYTES_PER_ELEMENT;
@@ -440,12 +489,12 @@ <h1><a href="index.html">All files</a> main.js</h1>
440489setReadOnly( Float16, 'BYTES_PER_ELEMENT', 2 );
441490
442491/**
443- * Size (in bytes) of each component .
492+ * Size (in bytes) of the underlying value .
444493*
445494* @name BYTES_PER_ELEMENT
446495* @memberof Float16.prototype
447496* @type {integer}
448- * @returns {integer} size of each component
497+ * @returns {integer} size in bytes
449498*
450499* @example
451500* var x = new Float16( 5.0 );
@@ -491,6 +540,41 @@ <h1><a href="index.html">All files</a> main.js</h1>
491540*/
492541setReadOnly( Float16.prototype, 'toJSON', toJSON );
493542
543+ /**
544+ * Returns the primitive value of a half-precision floating-point number.
545+ *
546+ * @name valueOf
547+ * @memberof Float16.prototype
548+ * @type {Function}
549+ * @returns {number} primitive value
550+ *
551+ * @example
552+ * var x = new Float16( 5.0 );
553+ *
554+ * var v = x.valueOf();
555+ * // returns 5.0
556+ */
557+ setReadOnly( Float16.prototype, 'valueOf', valueOf );
558+
559+ /**
560+ * Returns the primitive value of a half-precision floating-point number.
561+ *
562+ * @name toPrimitive
563+ * @memberof Float16.prototype
564+ * @type {Function}
565+ * @param {string} hint - conversion hint
566+ * @returns {number} primitive value
567+ *
568+ * @example
569+ * var x = new Float16( 5.0 );
570+ *
571+ * var v = x[ Symbol.toPrimitive ]( 'number' );
572+ * // returns 5.0
573+ */
574+ if ( hasToPrimitiveSymbolSupport ) {
575+ setReadOnly( Float16.prototype, ToPrimitiveSymbol, valueOf);
576+ }
577+
494578
495579// EXPORTS //
496580
@@ -502,7 +586,7 @@ <h1><a href="index.html">All files</a> main.js</h1>
502586 < div class ='footer quiet pad2 space-top1 center small '>
503587 Code coverage generated by
504588 < a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
505- at 2025-12-08T21:45:19.972Z
589+ at 2025-12-18T12:44:35.560Z
506590 </ div >
507591 < script src ="prettify.js "> </ script >
508592 < script >
0 commit comments