@@ -23,9 +23,9 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">num
2323 < div class ='clearfix '>
2424
2525 < div class ='fl pad1y space-right2 '>
26- < span class ="strong "> 97.93 % </ span >
26+ < span class ="strong "> 97.84 % </ span >
2727 < span class ="quiet "> Statements</ span >
28- < span class ='fraction '> 95/97 </ span >
28+ < span class ='fraction '> 91/93 </ span >
2929 </ div >
3030
3131
@@ -44,9 +44,9 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">num
4444
4545
4646 < div class ='fl pad1y space-right2 '>
47- < span class ="strong "> 97.93 % </ span >
47+ < span class ="strong "> 97.84 % </ span >
4848 < span class ="quiet "> Lines</ span >
49- < span class ='fraction '> 95/97 </ span >
49+ < span class ='fraction '> 91/93 </ span >
5050 </ div >
5151
5252
@@ -156,11 +156,7 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">num
156156< a name ='L91 '> </ a > < a href ='#L91 '> 91</ a >
157157< a name ='L92 '> </ a > < a href ='#L92 '> 92</ a >
158158< a name ='L93 '> </ a > < a href ='#L93 '> 93</ a >
159- < a name ='L94 '> </ a > < a href ='#L94 '> 94</ a >
160- < a name ='L95 '> </ a > < a href ='#L95 '> 95</ a >
161- < a name ='L96 '> </ a > < a href ='#L96 '> 96</ a >
162- < a name ='L97 '> </ a > < a href ='#L97 '> 97</ a >
163- < a name ='L98 '> </ a > < a href ='#L98 '> 98</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 2x</ span >
159+ < a name ='L94 '> </ a > < a href ='#L94 '> 94</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 2x</ span >
164160< span class ="cline-any cline-yes "> 2x</ span >
165161< span class ="cline-any cline-yes "> 2x</ span >
166162< span class ="cline-any cline-yes "> 2x</ span >
@@ -237,13 +233,9 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">num
237233< span class ="cline-any cline-yes "> 4996x</ span >
238234< span class ="cline-any cline-yes "> 4996x</ span >
239235< span class ="cline-any cline-yes "> 9992x</ span >
240- < span class ="cline-any cline-yes "> 9992x</ span >
241236< span class ="cline-any cline-yes "> 10010x</ span >
242237< span class ="cline-any cline-yes "> 2000x</ span >
243238< span class ="cline-any cline-yes "> 2000x</ span >
244- < span class ="cline-any cline-yes "> 2000x</ span >
245- < span class ="cline-any cline-yes "> 2000x</ span >
246- < span class ="cline-any cline-yes "> 7992x</ span >
247239< span class ="cline-any cline-yes "> 7992x</ span >
248240< span class ="cline-any cline-yes "> 7992x</ span >
249241< span class ="cline-any cline-yes "> 7992x</ span >
@@ -279,18 +271,18 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">num
279271
280272// MODULES //
281273
282- var abs = require( '@stdlib/math/base/special/abs ' );
274+ var isFiniteNumber = require( '@stdlib/math/base/assert/is-finite ' );
283275var FLOAT16_EPSILON = require( '@stdlib/constants/float16/eps' );
284276var FLOAT16_MAX = require( '@stdlib/constants/float16/max' );
285277var FLOAT16_MIN = require( '@stdlib/constants/float16/smallest-normal' );
286278var EPS = require( '@stdlib/constants/float64/eps' );
287279var PINF = require( '@stdlib/constants/float64/pinf' );
280+ var abs = require( '@stdlib/math/base/special/abs' );
288281
289282
290283// VARIABLES //
291284
292- var $isFinite = isFinite;
293- var inverseEpsilon = 1 / EPS;
285+ var INVERSE_EPSILON = 1.0 / EPS;
294286
295287
296288// FUNCTIONS //
@@ -303,7 +295,7 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">num
303295* @returns {number} rounded value
304296*/
305297function roundTiesToEven( n ) {
306- return (n + inverseEpsilon ) - inverseEpsilon ;
298+ return ( n + INVERSE_EPSILON ) - INVERSE_EPSILON ;
307299}
308300
309301
@@ -320,34 +312,30 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">num
320312* // returns 1.3369140625
321313*/
322314function float64ToFloat16( x ) {
323- var result ;
315+ var res ;
324316 var mod;
325317 var a;
326318 var s;
327319
328- if ( x === 0 || isNaN( x ) || !$isFinite ( x ) ) {
320+ if ( x === 0.0 || isNaN( x ) || !isFiniteNumber ( x ) ) {
329321 return x;
330322 }
331- if ( x < 0 ) {
332- s = -1;
323+ if ( x < 0.0 ) {
324+ s = -1.0 ;
333325 } else {
334- s = 1;
326+ s = 1.0 ;
335327 }
336-
337328 mod = abs( x );
338329 if ( mod < FLOAT16_MIN ) {
339- return (
340- s * roundTiesToEven( mod / FLOAT16_MIN / FLOAT16_EPSILON ) * FLOAT16_MIN * FLOAT16_EPSILON // eslint-disable-line max-len
341- );
330+ return s * roundTiesToEven( mod/FLOAT16_MIN/FLOAT16_EPSILON ) * FLOAT16_MIN * FLOAT16_EPSILON; // eslint-disable-line max-len
342331 }
343-
344- // Veltkamp's splitting
345- a = ( 1 + ( FLOAT16_EPSILON / EPS ) ) * mod;
346- result = a - ( a - mod );
347- if ( result > FLOAT16_MAX || isNaN( result ) ) < span class ="branch-0 cbranch-no " title ="branch not covered " > {</ span >
332+ // Leverage Veltkamp's algorithm for splitting a number into two numbers to generate an approximation to `x` which fits in a smaller number of bits:
333+ a = ( 1 + ( FLOAT16_EPSILON/EPS ) ) * mod;
334+ res = a - ( a - mod );
335+ if ( res > FLOAT16_MAX || isNaN( res ) ) < span class ="branch-0 cbranch-no " title ="branch not covered " > {</ span >
348336< span class ="cstat-no " title ="statement not covered " > return s * PINF;</ span >
349337< span class ="cstat-no " title ="statement not covered " > }</ span >
350- return s * result ;
338+ return s * res ;
351339}
352340
353341
@@ -361,7 +349,7 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">num
361349 < div class ='footer quiet pad2 space-top1 center small '>
362350 Code coverage generated by
363351 < a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
364- at 2025-11-18T10:27:46.197Z
352+ at 2025-11-18T10:44:49.340Z
365353 </ div >
366354 < script src ="../../../../../prettify.js "> </ script >
367355 < script >
0 commit comments