@@ -23,9 +23,9 @@ <h1><a href="index.html">All files</a> main.js</h1>
2323 < div class ='clearfix '>
2424
2525 < div class ='fl pad1y space-right2 '>
26- < span class ="strong "> 90.72 % </ span >
26+ < span class ="strong "> 90.37 % </ span >
2727 < span class ="quiet "> Statements</ span >
28- < span class ='fraction '> 176/194 </ span >
28+ < span class ='fraction '> 169/187 </ span >
2929 </ div >
3030
3131
@@ -44,9 +44,9 @@ <h1><a href="index.html">All files</a> main.js</h1>
4444
4545
4646 < div class ='fl pad1y space-right2 '>
47- < span class ="strong "> 90.72 % </ span >
47+ < span class ="strong "> 90.37 % </ span >
4848 < span class ="quiet "> Lines</ span >
49- < span class ='fraction '> 176/194 </ span >
49+ < span class ='fraction '> 169/187 </ span >
5050 </ div >
5151
5252
@@ -250,14 +250,7 @@ <h1><a href="index.html">All files</a> main.js</h1>
250250< a name ='L185 '> </ a > < a href ='#L185 '> 185</ a >
251251< a name ='L186 '> </ a > < a href ='#L186 '> 186</ a >
252252< a name ='L187 '> </ a > < a href ='#L187 '> 187</ a >
253- < a name ='L188 '> </ a > < a href ='#L188 '> 188</ a >
254- < a name ='L189 '> </ a > < a href ='#L189 '> 189</ a >
255- < a name ='L190 '> </ a > < a href ='#L190 '> 190</ a >
256- < a name ='L191 '> </ a > < a href ='#L191 '> 191</ a >
257- < a name ='L192 '> </ a > < a href ='#L192 '> 192</ a >
258- < a name ='L193 '> </ a > < a href ='#L193 '> 193</ a >
259- < a name ='L194 '> </ a > < a href ='#L194 '> 194</ a >
260- < a name ='L195 '> </ a > < a href ='#L195 '> 195</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 1x</ span >
253+ < a name ='L188 '> </ a > < a href ='#L188 '> 188</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 1x</ span >
261254< span class ="cline-any cline-yes "> 1x</ span >
262255< span class ="cline-any cline-yes "> 1x</ span >
263256< span class ="cline-any cline-yes "> 1x</ span >
@@ -346,7 +339,6 @@ <h1><a href="index.html">All files</a> main.js</h1>
346339< span class ="cline-any cline-yes "> 1x</ span >
347340< span class ="cline-any cline-yes "> 5x</ span >
348341< span class ="cline-any cline-yes "> 5x</ span >
349- < span class ="cline-any cline-yes "> 4996x</ span >
350342< span class ="cline-any cline-yes "> 5005x</ span >
351343< span class ="cline-any cline-yes "> 2498x</ span >
352344< span class ="cline-any cline-yes "> 2498x</ span >
@@ -371,7 +363,6 @@ <h1><a href="index.html">All files</a> main.js</h1>
371363< span class ="cline-any cline-no "> </ span >
372364< span class ="cline-any cline-no "> </ span >
373365< span class ="cline-any cline-yes "> 4996x</ span >
374- < span class ="cline-any cline-yes "> 4996x</ span >
375366< span class ="cline-any cline-yes "> 5005x</ span >
376367< span class ="cline-any cline-yes "> 1000x</ span >
377368< span class ="cline-any cline-yes "> 1000x</ span >
@@ -393,7 +384,6 @@ <h1><a href="index.html">All files</a> main.js</h1>
393384< span class ="cline-any cline-yes "> 1000x</ span >
394385< span class ="cline-any cline-yes "> 1000x</ span >
395386< span class ="cline-any cline-yes "> 1000x</ span >
396- < span class ="cline-any cline-yes "> 1000x</ span >
397387< span class ="cline-any cline-yes "> 670x</ span >
398388< span class ="cline-any cline-yes "> 670x</ span >
399389< span class ="cline-any cline-yes "> 1000x</ span >
@@ -408,13 +398,10 @@ <h1><a href="index.html">All files</a> main.js</h1>
408398< span class ="cline-any cline-yes "> 1000x</ span >
409399< span class ="cline-any cline-yes "> 1000x</ span >
410400< span class ="cline-any cline-yes "> 1000x</ span >
411- < span class ="cline-any cline-yes "> 1000x</ span >
412401< span class ="cline-any cline-yes "> 500x</ span >
413402< span class ="cline-any cline-yes "> 500x</ span >
414403< span class ="cline-any cline-yes "> 1000x</ span >
415404< span class ="cline-any cline-yes "> 1000x</ span >
416- < span class ="cline-any cline-yes "> 1000x</ span >
417- < span class ="cline-any cline-yes "> 3996x</ span >
418405< span class ="cline-any cline-yes "> 3996x</ span >
419406< span class ="cline-any cline-yes "> 3996x</ span >
420407< span class ="cline-any cline-yes "> 3996x</ span >
@@ -444,7 +431,6 @@ <h1><a href="index.html">All files</a> main.js</h1>
444431< span class ="cline-any cline-yes "> 1988x</ span >
445432< span class ="cline-any cline-yes "> 3996x</ span >
446433< span class ="cline-any cline-yes "> 3996x</ span >
447- < span class ="cline-any cline-yes "> 3996x</ span >
448434< span class ="cline-any cline-yes "> 5005x</ span >
449435< span class ="cline-any cline-yes "> 1x</ span >
450436< span class ="cline-any cline-yes "> 1x</ span >
@@ -524,7 +510,7 @@ <h1><a href="index.html">All files</a> main.js</h1>
524510 var mant;
525511 var sign;
526512
527- // Handle special cases
513+ // Handle special cases...
528514 if ( isnanf( x ) ) {
529515 return UINT16_NAN;
530516 }
@@ -540,7 +526,6 @@ <h1><a href="index.html">All files</a> main.js</h1>
540526 }
541527 return UINT16_POSITIVE_ZERO;
542528 }
543-
544529 if ( x < 0 ) {
545530 sign = 1;
546531 } else {
@@ -551,34 +536,32 @@ <h1><a href="index.html">All files</a> main.js</h1>
551536
552537 mant = bits & FLOAT32_SIGNIFICAND_MASK; // 23-bit mantissa
553538
554- // Store unbiased exponent of a 32-bit floating-point number.
539+ // Store unbiased exponent of a 32-bit floating-point number:
555540 f32Exponent = exponent( x );
556541
557- // Calculate exponent of a 16-bit floating-point number.
542+ // Calculate exponent of a 16-bit floating-point number:
558543 f16Exponent = f32Exponent + 15;
559544
560- // Handle overflow (infinity in float16)
545+ // Handle overflow (infinity in float16)...
561546 if ( f16Exponent >= 31 ) < span class ="branch-0 cbranch-no " title ="branch not covered " > {</ span >
562547< span class ="cstat-no " title ="statement not covered " > if ( sign ) {</ span >
563548< span class ="cstat-no " title ="statement not covered " > return UINT16_NINF; // -Infinity</ span >
564549< span class ="cstat-no " title ="statement not covered " > }</ span >
565550< span class ="cstat-no " title ="statement not covered " > return UINT16_PINF; // +Infinity</ span >
566551< span class ="cstat-no " title ="statement not covered " > }</ span >
567-
568- // Handle underflow (subnormal or zero in float16)
552+ // Handle underflow (subnormal or zero in float16)...
569553 if ( f16Exponent <= 0 ) {
570554 // Check if the value is too small to be represented even as a subnormal float16 number:
571555 if ( f16Exponent < -10 ) < span class ="branch-0 cbranch-no " title ="branch not covered " > {</ span >
572- < span class ="cstat-no " title ="statement not covered " > return sign << 15; // Return zero with the appropriate sign bit</ span >
556+ < span class ="cstat-no " title ="statement not covered " > return sign << 15; // return zero with the appropriate sign bit</ span >
573557< span class ="cstat-no " title ="statement not covered " > }</ span >
574-
575558 // Calculate the amount of right shift needed to denormalize the mantissa for subnormal representation:
576559 shift = 1 - f16Exponent;
577560
578561 // Create an 11-bit mantissa by adding the implicit leading 1 bit and extracting the top 10 bits from mantissa:
579562 mantissa = ( FLOAT32_IMPLICIT_BIT | mant ) >>> 13;
580563
581- // Determine the round bit and sticky bits based on the shift amount to apply correct rounding:
564+ // Determine the round bit and sticky bits based on the shift amount to apply correct rounding...
582565 if ( shift < 11 ) {
583566 // Extract the round bit at the position that will be truncated after the shift:
584567 roundBit = ( mantissa >>> ( shift - 1 ) ) & 1;
@@ -591,43 +574,40 @@ <h1><a href="index.html">All files</a> main.js</h1>
591574 stickyBits = ( mant & FLOAT32_SUBNORMAL_STICKY_MASK ) !== 0;
592575 }
593576 }< span class ="branch-0 cbranch-no " title ="branch not covered " > else {</ span >
594- < span class ="cstat-no " title ="statement not covered " > // When the shift is 11 or greater, the round bit comes from original mantissa</ span >
577+ < span class ="cstat-no " title ="statement not covered " > // When the shift is 11 or greater, the round bit comes from original mantissa: </ span >
595578< span class ="cstat-no " title ="statement not covered " > roundBit = ( mant >>> ( 13 - ( shift - 11 ) - 1 ) ) & 1;</ span >
596579< span class ="cstat-no " title ="statement not covered " > </ span >
597580< span class ="cstat-no " title ="statement not covered " > // Check if any bits below the round bit position in mantissa are set:</ span >
598581< span class ="cstat-no " title ="statement not covered " > stickyBits = ( mant & ( ( 1 << ( 13 - ( shift - 11 ) - 1 ) ) - 1 ) ) !== 0; // eslint-disable-line max-len</ span >
599582< span class ="cstat-no " title ="statement not covered " > }</ span >
600-
601583 // Apply the denormalization shift to the mantissa:
602584 mantissa >>>= shift;
603585
604- // Round to nearest even
586+ // Round to nearest even:
605587 if ( roundBit && ( stickyBits < span class ="branch-0 cbranch-no " title ="branch not covered " > || ( mantissa & 1 ) </ span > ) ) {
606588 mantissa += 1;
607589 }
608-
609590 return ( sign << 15 ) | mantissa;
610591 }
611-
612- // Extract the top 10 bits of the mantissa from 23 bits
592+ // Extract the top 10 bits of the mantissa from 23 bits:
613593 mantissa = mant >>> 13;
614594
615595 // Extract the round bit (the first bit that will be truncated):
616596 roundBit = ( mant >>> 12 ) & 1;
617597
618- // Check sticky bits (all bits below bit 12)
598+ // Check sticky bits (all bits below bit 12):
619599 stickyBits = ( mant & FLOAT32_STICKY_MASK ) !== 0;
620600
621- // Round up if roundBit is 1 AND (sticky bits OR mantissa is odd)
601+ // Round up if roundBit is 1 AND (sticky bits OR mantissa is odd):
622602 if ( roundBit && ( stickyBits < span class ="branch-0 cbranch-no " title ="branch not covered " > || ( mantissa & 1 ) </ span > ) ) {
623603 mantissa += 1;
624604
625- // Check for mantissa overflow (carries into exponent)
605+ // Check for mantissa overflow (carries into exponent)...
626606 if ( mantissa > MAX_MANTISSA ) {
627607 f16Exponent += 1;
628608 mantissa = 0;
629609
630- // Check for exponent overflow
610+ // Check for exponent overflow...
631611 if ( f16Exponent >= 31 ) < span class ="branch-0 cbranch-no " title ="branch not covered " > {</ span >
632612< span class ="cstat-no " title ="statement not covered " > if ( sign ) {</ span >
633613< span class ="cstat-no " title ="statement not covered " > return UINT16_NINF; // -Infinity</ span >
@@ -636,8 +616,7 @@ <h1><a href="index.html">All files</a> main.js</h1>
636616< span class ="cstat-no " title ="statement not covered " > }</ span >
637617 }
638618 }
639-
640- // Combine sign (1 bit), exponent (5 bits), and mantissa (10 bits)
619+ // Combine sign (1 bit), exponent (5 bits), and mantissa (10 bits):
641620 return ( sign << 15 ) | ( f16Exponent << 10 ) | mantissa;
642621}
643622
@@ -652,7 +631,7 @@ <h1><a href="index.html">All files</a> main.js</h1>
652631 < div class ='footer quiet pad2 space-top1 center small '>
653632 Code coverage generated by
654633 < a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
655- at 2025-12-03T10:02:05.829Z
634+ at 2025-12-03T10:04:59.364Z
656635 </ div >
657636 < script src ="prettify.js "> </ script >
658637 < script >
0 commit comments