@@ -23,16 +23,16 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">mat
23
23
< div class ='clearfix '>
24
24
25
25
< div class ='fl pad1y space-right2 '>
26
- < span class ="strong "> 97.93 % </ span >
26
+ < span class ="strong "> 100 % </ span >
27
27
< span class ="quiet "> Statements</ span >
28
- < span class ='fraction '> 142/145 </ span >
28
+ < span class ='fraction '> 150/150 </ span >
29
29
</ div >
30
30
31
31
32
32
< div class ='fl pad1y space-right2 '>
33
- < span class ="strong "> 93.33 % </ span >
33
+ < span class ="strong "> 100 % </ span >
34
34
< span class ="quiet "> Branches</ span >
35
- < span class ='fraction '> 14/15 </ span >
35
+ < span class ='fraction '> 16/16 </ span >
36
36
</ div >
37
37
38
38
@@ -44,9 +44,9 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">mat
44
44
45
45
46
46
< div class ='fl pad1y space-right2 '>
47
- < span class ="strong "> 97.93 % </ span >
47
+ < span class ="strong "> 100 % </ span >
48
48
< span class ="quiet "> Lines</ span >
49
- < span class ='fraction '> 142/145 </ span >
49
+ < span class ='fraction '> 150/150 </ span >
50
50
</ div >
51
51
52
52
@@ -208,7 +208,16 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">mat
208
208
< a name ='L143 '> </ a > < a href ='#L143 '> 143</ a >
209
209
< a name ='L144 '> </ a > < a href ='#L144 '> 144</ a >
210
210
< 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 >
212
221
< span class ="cline-any cline-yes "> 1x</ span >
213
222
< span class ="cline-any cline-yes "> 1x</ span >
214
223
< 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
294
303
< span class ="cline-any cline-yes "> 1x</ span >
295
304
< span class ="cline-any cline-yes "> 1x</ span >
296
305
< 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 >
309
319
< span class ="cline-any cline-yes "> 4x</ span >
310
320
< span class ="cline-any cline-yes "> 3x</ span >
311
321
< 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
318
328
< span class ="cline-any cline-yes "> 1x</ span >
319
329
< span class ="cline-any cline-yes "> 1x</ span >
320
330
< 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 >
324
334
< span class ="cline-any cline-yes "> 3x</ span >
325
335
< 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 >
328
338
< span class ="cline-any cline-yes "> 2x</ span >
329
339
< span class ="cline-any cline-yes "> 2x</ span >
330
340
< 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 >
332
342
< span class ="cline-any cline-yes "> 3020x</ span >
333
343
< span class ="cline-any cline-yes "> 3020x</ span >
334
344
< span class ="cline-any cline-yes "> 3020x</ span >
335
345
< 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 >
341
351
< span class ="cline-any cline-yes "> 2x</ span >
342
352
< span class ="cline-any cline-yes "> 2x</ span >
343
353
< 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
347
357
< span class ="cline-any cline-yes "> 1008x</ span >
348
358
< span class ="cline-any cline-yes "> 1008x</ span >
349
359
< 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 >
351
361
< span class ="cline-any cline-yes "> 1x</ span >
352
362
< span class ="cline-any cline-yes "> 1x</ span >
353
363
< 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
394
404
var toWord = require( '@stdlib/number/float32/base/to-word' );
395
405
var fromWord = require( '@stdlib/number/float32/base/from-word' );
396
406
var 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' );
397
410
398
411
399
412
// VARIABLES //
400
413
401
414
var TWO25 = 33554432.0; // 0x4c000000
402
415
var TWOM25 = 2.9802322387695312e-8; // 0x33000000
416
+ var FLOAT32_SIGNIFICAND_MASK_WITH_SIGN = 0x807fffff; // 1 00000000 11111111111111111111111
417
+ var ALL_ONES = 0xff; // 0xff = 255 => 11111111
403
418
404
419
405
420
// MAIN //
@@ -446,51 +461,51 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">mat
446
461
frac = float64ToFloat32( frac );
447
462
ix = toWord( frac );
448
463
449
- // Extract exponent
450
- k = ( ix & 0x7f800000 ) >> 23 ;
464
+ // Extract exponent:
465
+ k = ( ix & FLOAT32_EXPONENT_MASK ) >> ( FLOAT32_PRECISION - 1 ) ;
451
466
452
- // 0 or subnormal frac
467
+ // 0 or subnormal frac:
453
468
if ( k === 0 ) {
454
- if ( ( ix & 0x7fffffff ) === 0 ) {
455
- // +-0
469
+ if ( ( ix & FLOAT32_ABS_MASK ) === 0 ) {
470
+ // +-0:
456
471
return frac;
457
472
}
458
473
frac = float64ToFloat32( frac * TWO25 );
459
474
ix = toWord( frac );
460
- k = ( ( ix & 0x7f800000 ) >> 23 ) - 25;
475
+ k = ( ( ix & FLOAT32_EXPONENT_MASK ) >> ( FLOAT32_PRECISION - 1 ) ) - 25;
461
476
if ( exp < -50000 ) {
462
- // Underflow
477
+ // Underflow:
463
478
return 0.0;
464
479
}
465
480
}
466
481
467
- // NaN or Inf
468
- if ( k === 0xff ) {
482
+ // NaN or Inf:
483
+ if ( k === ALL_ONES ) {
469
484
return float64ToFloat32( frac + frac );
470
485
}
471
- k += exp;
472
- if ( k > 0xfe ) {
473
- // Overflow
486
+ k = ( k + exp ) | 0 ;
487
+ if ( k > ALL_ONES - 1 ) {
488
+ // Overflow:
474
489
return copysignf( PINF, frac );
475
490
}
476
491
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 ) ) );
479
494
return frac;
480
495
}
481
496
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
+ }
486
501
487
- // Underflow
502
+ // Underflow:
488
503
return copysignf( 0.0, frac );
489
504
}
490
505
491
- // Subnormal result
506
+ // Subnormal result:
492
507
k += 25;
493
- frac = fromWord( ( ix & 0x807fffff ) | ( k << 23 ) );
508
+ frac = fromWord( ( ix & FLOAT32_SIGNIFICAND_MASK_WITH_SIGN ) | ( k << ( FLOAT32_PRECISION - 1 ) ) );
494
509
return float64ToFloat32( frac * TWOM25 );
495
510
}
496
511
@@ -505,7 +520,7 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">mat
505
520
< div class ='footer quiet pad2 space-top1 center small '>
506
521
Code coverage generated by
507
522
< 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
509
524
</ div >
510
525
< script src ="../../../../../prettify.js "> </ script >
511
526
< script >
0 commit comments