@@ -23,16 +23,16 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">mat
2323 < div class ='clearfix '>
2424
2525 < div class ='fl pad1y space-right2 '>
26- < span class ="strong "> 97.93 % </ span >
26+ < span class ="strong "> 100 % </ span >
2727 < span class ="quiet "> Statements</ span >
28- < span class ='fraction '> 142/145 </ span >
28+ < span class ='fraction '> 150/150 </ span >
2929 </ div >
3030
3131
3232 < div class ='fl pad1y space-right2 '>
33- < span class ="strong "> 93.33 % </ span >
33+ < span class ="strong "> 100 % </ span >
3434 < span class ="quiet "> Branches</ span >
35- < span class ='fraction '> 14/15 </ span >
35+ < span class ='fraction '> 16/16 </ span >
3636 </ div >
3737
3838
@@ -44,9 +44,9 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">mat
4444
4545
4646 < div class ='fl pad1y space-right2 '>
47- < span class ="strong "> 97.93 % </ span >
47+ < span class ="strong "> 100 % </ span >
4848 < span class ="quiet "> Lines</ span >
49- < span class ='fraction '> 142/145 </ span >
49+ < span class ='fraction '> 150/150 </ span >
5050 </ div >
5151
5252
@@ -208,7 +208,16 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">mat
208208< a name ='L143 '> </ a > < a href ='#L143 '> 143</ a >
209209< a name ='L144 '> </ a > < a href ='#L144 '> 144</ a >
210210< a name ='L145 '> </ a > < a href ='#L145 '> 145</ a >
211- < a name ='L146 '> </ a > < a href ='#L146 '> 146</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 1x</ span >
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 > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 1x</ span >
217+ < span class ="cline-any cline-yes "> 1x</ span >
218+ < span class ="cline-any cline-yes "> 1x</ span >
219+ < span class ="cline-any cline-yes "> 1x</ span >
220+ < span class ="cline-any cline-yes "> 1x</ span >
212221< span class ="cline-any cline-yes "> 1x</ span >
213222< span class ="cline-any cline-yes "> 1x</ span >
214223< span class ="cline-any cline-yes "> 1x</ span >
@@ -294,18 +303,19 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">mat
294303< span class ="cline-any cline-yes "> 1x</ span >
295304< span class ="cline-any cline-yes "> 1x</ span >
296305< span class ="cline-any cline-yes "> 1x</ span >
297- < span class ="cline-any cline-yes "> 4039x</ span >
298- < span class ="cline-any cline-yes "> 4039x</ span >
299- < span class ="cline-any cline-yes "> 4039x</ span >
300- < span class ="cline-any cline-yes "> 4039x</ span >
301- < span class ="cline-any cline-yes "> 4039x</ span >
302- < span class ="cline-any cline-yes "> 4039x</ span >
303- < span class ="cline-any cline-yes "> 4039x</ span >
304- < span class ="cline-any cline-yes "> 4039x</ span >
305- < span class ="cline-any cline-yes "> 4039x</ span >
306- < span class ="cline-any cline-yes "> 4039x</ span >
307- < span class ="cline-any cline-yes "> 4039x</ span >
308- < span class ="cline-any cline-yes "> 4039x</ span >
306+ < span class ="cline-any cline-yes "> 1x</ span >
307+ < span class ="cline-any cline-yes "> 4040x</ span >
308+ < span class ="cline-any cline-yes "> 4040x</ span >
309+ < span class ="cline-any cline-yes "> 4040x</ span >
310+ < span class ="cline-any cline-yes "> 4040x</ span >
311+ < span class ="cline-any cline-yes "> 4040x</ span >
312+ < span class ="cline-any cline-yes "> 4040x</ span >
313+ < span class ="cline-any cline-yes "> 4040x</ span >
314+ < span class ="cline-any cline-yes "> 4040x</ span >
315+ < span class ="cline-any cline-yes "> 4040x</ span >
316+ < span class ="cline-any cline-yes "> 4040x</ span >
317+ < span class ="cline-any cline-yes "> 4040x</ span >
318+ < span class ="cline-any cline-yes "> 4040x</ span >
309319< span class ="cline-any cline-yes "> 4x</ span >
310320< span class ="cline-any cline-yes "> 3x</ span >
311321< span class ="cline-any cline-yes "> 3x</ span >
@@ -318,26 +328,26 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">mat
318328< span class ="cline-any cline-yes "> 1x</ span >
319329< span class ="cline-any cline-yes "> 1x</ span >
320330< span class ="cline-any cline-yes "> 4x</ span >
321- < span class ="cline-any cline-yes "> 4035x </ span >
322- < span class ="cline-any cline-yes "> 4035x </ span >
323- < span class ="cline-any cline-yes "> 4039x </ span >
331+ < span class ="cline-any cline-yes "> 4036x </ span >
332+ < span class ="cline-any cline-yes "> 4036x </ span >
333+ < span class ="cline-any cline-yes "> 4040x </ span >
324334< span class ="cline-any cline-yes "> 3x</ span >
325335< span class ="cline-any cline-yes "> 3x</ span >
326- < span class ="cline-any cline-yes "> 4032x </ span >
327- < span class ="cline-any cline-yes "> 4039x </ span >
336+ < span class ="cline-any cline-yes "> 4033x </ span >
337+ < span class ="cline-any cline-yes "> 4040x </ span >
328338< span class ="cline-any cline-yes "> 2x</ span >
329339< span class ="cline-any cline-yes "> 2x</ span >
330340< span class ="cline-any cline-yes "> 2x</ span >
331- < span class ="cline-any cline-yes "> 4039x </ span >
341+ < span class ="cline-any cline-yes "> 4040x </ span >
332342< span class ="cline-any cline-yes "> 3020x</ span >
333343< span class ="cline-any cline-yes "> 3020x</ span >
334344< span class ="cline-any cline-yes "> 3020x</ span >
335345< span class ="cline-any cline-yes "> 3020x</ span >
336- < span class ="cline-any cline-yes "> 4039x </ span >
337- < span class ="cline-any cline-yes "> 2x </ span >
338- < span class ="cline-any cline-no " > </ span >
339- < span class ="cline-any cline-no " > </ span >
340- < span class ="cline-any cline-no " > </ span >
346+ < span class ="cline-any cline-yes "> 4040x </ span >
347+ < span class ="cline-any cline-yes "> 3x </ span >
348+ < span class ="cline-any cline-yes " > 1x </ span >
349+ < span class ="cline-any cline-yes " > 1x </ span >
350+ < span class ="cline-any cline-yes " > 1x </ span >
341351< span class ="cline-any cline-yes "> 2x</ span >
342352< span class ="cline-any cline-yes "> 2x</ span >
343353< span class ="cline-any cline-yes "> 2x</ span >
@@ -347,7 +357,7 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">mat
347357< span class ="cline-any cline-yes "> 1008x</ span >
348358< span class ="cline-any cline-yes "> 1008x</ span >
349359< span class ="cline-any cline-yes "> 1008x</ span >
350- < span class ="cline-any cline-yes "> 4039x </ span >
360+ < span class ="cline-any cline-yes "> 4040x </ span >
351361< span class ="cline-any cline-yes "> 1x</ span >
352362< span class ="cline-any cline-yes "> 1x</ span >
353363< span class ="cline-any cline-yes "> 1x</ span >
@@ -394,12 +404,17 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">mat
394404var toWord = require( '@stdlib/number/float32/base/to-word' );
395405var fromWord = require( '@stdlib/number/float32/base/from-word' );
396406var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' );
407+ var FLOAT32_EXPONENT_MASK = require( '@stdlib/constants/float32/exponent-mask' );
408+ var FLOAT32_PRECISION = require( '@stdlib/constants/float32/precision' );
409+ var FLOAT32_ABS_MASK = require( '@stdlib/constants/float32/abs-mask' );
397410
398411
399412// VARIABLES //
400413
401414var TWO25 = 33554432.0; // 0x4c000000
402415var TWOM25 = 2.9802322387695312e-8; // 0x33000000
416+ var FLOAT32_SIGNIFICAND_MASK_WITH_SIGN = 0x807fffff; // 1 00000000 11111111111111111111111
417+ var ALL_ONES = 0xff; // 0xff = 255 => 11111111
403418
404419
405420// MAIN //
@@ -446,51 +461,51 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">mat
446461 frac = float64ToFloat32( frac );
447462 ix = toWord( frac );
448463
449- // Extract exponent
450- k = ( ix & 0x7f800000 ) >> 23 ;
464+ // Extract exponent:
465+ k = ( ix & FLOAT32_EXPONENT_MASK ) >> ( FLOAT32_PRECISION - 1 ) ;
451466
452- // 0 or subnormal frac
467+ // 0 or subnormal frac:
453468 if ( k === 0 ) {
454- if ( ( ix & 0x7fffffff ) === 0 ) {
455- // +-0
469+ if ( ( ix & FLOAT32_ABS_MASK ) === 0 ) {
470+ // +-0:
456471 return frac;
457472 }
458473 frac = float64ToFloat32( frac * TWO25 );
459474 ix = toWord( frac );
460- k = ( ( ix & 0x7f800000 ) >> 23 ) - 25;
475+ k = ( ( ix & FLOAT32_EXPONENT_MASK ) >> ( FLOAT32_PRECISION - 1 ) ) - 25;
461476 if ( exp < -50000 ) {
462- // Underflow
477+ // Underflow:
463478 return 0.0;
464479 }
465480 }
466481
467- // NaN or Inf
468- if ( k === 0xff ) {
482+ // NaN or Inf:
483+ if ( k === ALL_ONES ) {
469484 return float64ToFloat32( frac + frac );
470485 }
471- k += exp;
472- if ( k > 0xfe ) {
473- // Overflow
486+ k = ( k + exp ) | 0 ;
487+ if ( k > ALL_ONES - 1 ) {
488+ // Overflow:
474489 return copysignf( PINF, frac );
475490 }
476491 if ( k > 0 ) {
477- // Normal result
478- frac = fromWord( ( ix & 0x807fffff ) | ( k << 23 ) );
492+ // Normal result:
493+ frac = fromWord( ( ix & FLOAT32_SIGNIFICAND_MASK_WITH_SIGN ) | ( k << ( FLOAT32_PRECISION - 1 ) ) );
479494 return frac;
480495 }
481496 if ( k <= -25 ) {
482- if ( exp > 50000 ) < span class =" branch-0 cbranch-no " title =" branch not covered " > { </ span >
483- < span class =" cstat-no " title =" statement not covered " > // In case of integer overflow in n + k</ span >
484- < span class =" cstat-no " title =" statement not covered " > return copysignf( PINF, frac );</ span >
485- < span class =" cstat-no " title =" statement not covered " > }</ span >
497+ if ( exp > 50000 ) {
498+ // In case of integer overflow in n + k:
499+ return copysignf( PINF, frac );
500+ }
486501
487- // Underflow
502+ // Underflow:
488503 return copysignf( 0.0, frac );
489504 }
490505
491- // Subnormal result
506+ // Subnormal result:
492507 k += 25;
493- frac = fromWord( ( ix & 0x807fffff ) | ( k << 23 ) );
508+ frac = fromWord( ( ix & FLOAT32_SIGNIFICAND_MASK_WITH_SIGN ) | ( k << ( FLOAT32_PRECISION - 1 ) ) );
494509 return float64ToFloat32( frac * TWOM25 );
495510}
496511
@@ -505,7 +520,7 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">mat
505520 < div class ='footer quiet pad2 space-top1 center small '>
506521 Code coverage generated by
507522 < a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
508- at 2024-08-24T14:12:36.465Z
523+ at 2024-11-12T02:50:33.896Z
509524 </ div >
510525 < script src ="../../../../../prettify.js "> </ script >
511526 < script >
0 commit comments