source: imaps-frontend/node_modules/es-abstract/helpers/bytesAsFloat32.js@ 79a0317

main
Last change on this file since 79a0317 was 79a0317, checked in by stefan toskovski <stefantoska84@…>, 3 days ago

F4 Finalna Verzija

  • Property mode set to 100644
File size: 1.1 KB
Line 
1'use strict';
2
3var $pow = require('math-intrinsics/pow');
4
5module.exports = function bytesAsFloat32(rawBytes) {
6 // return new $Float32Array(new $Uint8Array(rawBytes).buffer)[0];
7
8 /*
9 Let value be the byte elements of rawBytes concatenated and interpreted as a little-endian bit string encoding of an IEEE 754-2008 binary32 value.
10If value is an IEEE 754-2008 binary32 NaN value, return the NaN Number value.
11Return the Number value that corresponds to value.
12 */
13 var sign = rawBytes[3] & 0x80 ? -1 : 1; // Check the sign bit
14 var exponent = ((rawBytes[3] & 0x7F) << 1)
15 | (rawBytes[2] >> 7); // Combine bits for exponent
16 var mantissa = ((rawBytes[2] & 0x7F) << 16)
17 | (rawBytes[1] << 8)
18 | rawBytes[0]; // Combine bits for mantissa
19
20 if (exponent === 0 && mantissa === 0) {
21 return sign === 1 ? 0 : -0;
22 }
23 if (exponent === 0xFF && mantissa === 0) {
24 return sign === 1 ? Infinity : -Infinity;
25 }
26 if (exponent === 0xFF && mantissa !== 0) {
27 return NaN;
28 }
29
30 exponent -= 127; // subtract the bias
31
32 if (exponent === -127) {
33 return sign * mantissa * $pow(2, -126 - 23);
34 }
35 return sign * (1 + (mantissa * $pow(2, -23))) * $pow(2, exponent);
36};
Note: See TracBrowser for help on using the repository browser.