Apply module bundling
[platform/framework/web/wrtjs.git] / node_modules / @webassemblyjs / floating-point-hex-parser / esm / index.js
1 export default function parse(input) {
2   input = input.toUpperCase();
3   var splitIndex = input.indexOf("P");
4   var mantissa, exponent;
5
6   if (splitIndex !== -1) {
7     mantissa = input.substring(0, splitIndex);
8     exponent = parseInt(input.substring(splitIndex + 1));
9   } else {
10     mantissa = input;
11     exponent = 0;
12   }
13
14   var dotIndex = mantissa.indexOf(".");
15
16   if (dotIndex !== -1) {
17     var integerPart = parseInt(mantissa.substring(0, dotIndex), 16);
18     var sign = Math.sign(integerPart);
19     integerPart = sign * integerPart;
20     var fractionLength = mantissa.length - dotIndex - 1;
21     var fractionalPart = parseInt(mantissa.substring(dotIndex + 1), 16);
22     var fraction = fractionLength > 0 ? fractionalPart / Math.pow(16, fractionLength) : 0;
23
24     if (sign === 0) {
25       if (fraction === 0) {
26         mantissa = sign;
27       } else {
28         if (Object.is(sign, -0)) {
29           mantissa = -fraction;
30         } else {
31           mantissa = fraction;
32         }
33       }
34     } else {
35       mantissa = sign * (integerPart + fraction);
36     }
37   } else {
38     mantissa = parseInt(mantissa, 16);
39   }
40
41   return mantissa * (splitIndex !== -1 ? Math.pow(2, exponent) : 1);
42 }