Socket
Socket
Sign inDemoInstall

hfp-js

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

hfp-js - npm Package Compare versions

Comparing version 1.0.0 to 1.0.1

2

package.json
{
"name": "hfp-js",
"version": "1.0.0",
"version": "1.0.1",
"description": "",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

@@ -1,25 +0,32 @@

export function HfpBinStringToFloat32 (str: string): number | Error {
export function HfpBinStringToFloat (str: string): number | Error {
if(str.length !== 32) return Error('Requires a 32 bit binary number')
let bin: number = parseInt(str, 2)
const sign: number = bin >>> 31 ? -1 : 1;
let exp: number = (bin >>> 24 & 0x7f) - 64;
let bin: number = parseInt(str, 2) | 0;
// mask off the first 8 bits (those aren't used)
// convert the last 24 bits
let mantissa:string = (bin & 0xffffff).toString(2)
// converting from number to string in js loses leading 0s
// also, this is a decimal, so we have a 24 bit number, but we need 25 bit decimal
// we pad left until we reach the desired 25 bits
while (mantissa.length < 25) {
mantissa = `0`+ mantissa
let exp: number = -1;
let mantissa: number = bin & 0xffffff;
// protect against zeros
if (mantissa == 0) return bin < 0 ? -0 : 0;
while (mantissa < 0x800000) {
mantissa <<= 1; exp--;
}
exp += 4 * (((bin >> 24) & 0x7f) - 64);
const sign: number = bin & 0x80000000
const f1: number = sign | ((exp + 1023) << 20) | ((mantissa & ~0x800000) >> 3);
const f0: number = (mantissa & ~0x800000) << 29;
return new Float64Array(new Int32Array([f0, f1]).buffer)[0];
}
let float32: number = 0
for (let i:number = 0; Math.abs(i) < mantissa.length - 1; i -= 1) {
float32 += parseInt(mantissa[Math.abs(i)], 2) * Math.pow(2, i)
export function HfpBinToFloat (bin: number): number | Error {
let exp: number = -1;
let mantissa: number = bin & 0xffffff;
// protect against zeros
if (mantissa == 0) return bin < 0 ? -0 : 0;
while (mantissa < 0x800000) {
mantissa <<= 1; exp--;
}
return float32 * sign * Math.pow(16, exp);
exp += 4 * (((bin >> 24) & 0x7f) - 64);
const sign: number = bin & 0x80000000
const f1: number = sign | ((exp + 1023) << 20) | ((mantissa & ~0x800000) >> 3);
const f0: number = (mantissa & ~0x800000) << 29;
return new Float64Array(new Int32Array([f0, f1]).buffer)[0];
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc