2323var NINF = require ( '@stdlib/constants/float16/ninf' ) ;
2424var PINF = require ( '@stdlib/constants/float16/pinf' ) ;
2525var FLOAT16_EXPONENT_BIAS = require ( '@stdlib/constants/float16/exponent-bias' ) ;
26+ var FLOAT16_SIGN_MASK = require ( '@stdlib/constants/float16/sign-mask' ) ;
27+ var FLOAT16_EXPONENT_MASK = require ( '@stdlib/constants/float16/exponent-mask' ) ;
28+ var FLOAT16_SIGNIFICAND_MASK = require ( '@stdlib/constants/float16/significand-mask' ) ;
29+ var FLOAT16_NUM_SIGNIFICAND_BITS = require ( '@stdlib/constants/float16/num-significand-bits' ) ;
2630var pow = require ( '@stdlib/math/base/special/pow' ) ;
2731
2832
2933// VARIABLES //
3034
31- var SIGN_MASK = 0x8000 ; // 0x8000 = 32768 => 1 00000 0000000000
32- var EXPONENT_MASK = 0x7C00 ; // 0x7C00 = 31744 => 0 11111 0000000000
33- var MANTISSA_MASK = 0x03FF ; // 0x03FF = 1023 => 0 00000 1111111111
34-
35- var NUM_MANTISSA_BITS = 10 ; // Number of mantissa bits in float16
36- var MAX_EXPONENT = 31 ; // Maximum exponent value
35+ var MAX_EXPONENT = 31 ; // Maximum exponent value
36+ var SUBNORMAL_EXPONENT = 1 - FLOAT16_EXPONENT_BIAS ; // Minimum exponent for subnormal numbers
3737
3838
3939// MAIN //
@@ -57,13 +57,13 @@ function fromWord( word ) {
5757 var f16 ;
5858
5959 // Extract sign bit (bit 15)
60- sign = ( word & SIGN_MASK ) >>> 15 ;
60+ sign = ( word & FLOAT16_SIGN_MASK ) >>> 15 ;
6161
6262 // Extract exponent (bits 14-10)
63- exponent = ( word & EXPONENT_MASK ) >>> NUM_MANTISSA_BITS ;
63+ exponent = ( word & FLOAT16_EXPONENT_MASK ) >>> FLOAT16_NUM_SIGNIFICAND_BITS ;
6464
6565 // Extract mantissa (bits 9-0)
66- mantissa = word & MANTISSA_MASK ;
66+ mantissa = word & FLOAT16_SIGNIFICAND_MASK ;
6767
6868 // Handle special cases
6969 if ( exponent === MAX_EXPONENT ) {
@@ -85,7 +85,7 @@ function fromWord( word ) {
8585 return 0.0 ;
8686 }
8787 // Subnormal number: (-1)^sign × 2^(-14) × (0.mantissa)
88- f16 = pow ( 2.0 , - 14 ) * ( mantissa / 1024.0 ) ;
88+ f16 = pow ( 2.0 , SUBNORMAL_EXPONENT ) * ( mantissa / 1024.0 ) ;
8989 if ( sign ) {
9090 return - f16 ;
9191 }
0 commit comments