@@ -40,20 +40,18 @@ var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' );
4040var uint32ToInt32 = require ( '@stdlib/number/uint32/base/to-int32' ) ;
4141var ldexpf = require ( '@stdlib/math/base/special/ldexpf' ) ;
4242var LN2 = require ( '@stdlib/constants/float32/ln-two' ) ;
43- var BIAS = require ( '@stdlib/constants/float32/exponent-bias' ) ;
44- var ABS_MASK = require ( '@stdlib/constants/float64/high-word-abs-mask' ) ;
43+ var FLOAT32_EXPONENT_BIAS = require ( '@stdlib/constants/float32/exponent-bias' ) ;
44+ var FLOAT32_ABS_MASK = require ( '@stdlib/constants/float32/abs-mask' ) ;
45+ var FLOAT32_SIGNIFICAND_MASK = require ( '@stdlib/constants/float32/significand-mask' ) ;
4546var polyvalP = require ( './polyval_p.js' ) ;
4647
4748
4849// VARIABLES //
4950
50- // 0x00100000 = 1048576 => 0 00000000001 00000000000000000000 => biased exponent: 1 = -1022+1023 => 2^-1022
51+ // 0x00800000 = 8388608 => 0 00000001 00000000000000000000000 => biased exponent: 1 = -126+127 => 2^-126 (smallest normal float32)
5152var HIGH_MIN_NORMAL_EXP = 0x00800000 ; // asm type annotation
5253
53- // 0x007fffff = 8388607 => 0 00000000000 11111111111111111111111 => biased exponent: 0 = -127+127 => 2^-127
54- var HIGH_SIGNIFICAND_MASK = 0x007fffff ; // asm type annotation
55-
56- // 0x3fe00000 = 1071644672 => 0 01111111110 00000000000000000000 => biased exponent: 1022 = -1+1023 => 2^-1
54+ // 0x3f000000 = 1056964608 => 0 01111110 00000000000000000000000 => biased exponent: 126 = -1+127 => 2^-1 (i.e., 0.5)
5755var HIGH_BIASED_EXP_NEG_1 = 0x3f000000 ; // asm type annotation
5856
5957// 0xffff8000 = 4294934528 => 1 11111111111 11111000000000000000
@@ -97,18 +95,18 @@ function pow2( j, hp, lp ) {
9795 var i ;
9896 var k ;
9997
100- i = ( j & ABS_MASK ) ; // asm type annotation
101- k = ( ( i >> HIGH_NUM_SIGNIFICAND_BITS ) - BIAS ) ; // asm type annotation
98+ i = ( j & FLOAT32_ABS_MASK ) ; // asm type annotation
99+ k = ( ( i >> HIGH_NUM_SIGNIFICAND_BITS ) - FLOAT32_EXPONENT_BIAS ) ; // asm type annotation
102100 n = 0 ;
103101
104102 // `|z| > 0.5`, set `n = [z+0.5]`
105103 if ( i > HIGH_BIASED_EXP_NEG_1 ) {
106104 n = ( j + ( HIGH_MIN_NORMAL_EXP >> ( k + 1 ) ) ) >>> 0 ; // asm type annotation
107- k = ( ( ( n & ABS_MASK ) >> HIGH_NUM_SIGNIFICAND_BITS ) - BIAS ) ; // new k for n
108- tmp = ( ( n & ~ ( HIGH_SIGNIFICAND_MASK >> k ) ) ) >>> 0 ; // asm type annotation
105+ k = ( ( ( n & FLOAT32_ABS_MASK ) >> HIGH_NUM_SIGNIFICAND_BITS ) - FLOAT32_EXPONENT_BIAS ) ; // new k for n
106+ tmp = ( ( n & ~ ( FLOAT32_SIGNIFICAND_MASK >> k ) ) ) >>> 0 ; // asm type annotation
109107 tmp = float64ToFloat32 ( tmp ) ;
110108 t = toWordf ( tmp ) ;
111- n = ( ( ( n & HIGH_SIGNIFICAND_MASK ) | HIGH_MIN_NORMAL_EXP ) >> ( HIGH_NUM_SIGNIFICAND_BITS - k ) ) >>> 0 ; // eslint-disable-line max-len
109+ n = ( ( ( n & FLOAT32_SIGNIFICAND_MASK ) | HIGH_MIN_NORMAL_EXP ) >> ( HIGH_NUM_SIGNIFICAND_BITS - k ) ) >>> 0 ; // eslint-disable-line max-len
112110 if ( j < 0 ) {
113111 n = - n ;
114112 }
0 commit comments