Skip to content

Files

Latest commit

22dc510 · Feb 9, 2017

History

History

float32-from-binary-string

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Feb 9, 2017
Jul 2, 2016
Dec 28, 2016
Jan 4, 2017
Dec 3, 2016
Dec 8, 2016

From Binary String

Create a single-precision floating-point number from an IEEE 754 literal bit representation.

Usage

var fromBinaryStringf = require( '@stdlib/math/base/utils/float32-from-binary-string' );

fromBinaryStringf( bstr )

Creates a single-precision floating-point number from an IEEE 754 literal bit representation.

var bstr = '01000000100000000000000000000000';
var v = fromBinaryStringf( bstr );
// returns 4.0

bstr = '01000000010010010000111111011011';
v = fromBinaryStringf( bstr );
// returns ~3.14

bstr = '11111111011011000011101000110011';
v = fromBinaryStringf( bstr );
// returns ~-3.14e+38

The function handles subnormals.

bstr = '10000000000000000000000000010110';
val = fromBinaryStringf( bstr );
// returns ~-3.08e-44

bstr = '00000000000000000000000000000001';
val = fromBinaryStringf( bstr );
// returns ~1.40e-45

The function handles special values.

bstr = '00000000000000000000000000000000';
val = fromBinaryStringf( bstr );
// returns 0.0

bstr = '10000000000000000000000000000000';
val = fromBinaryStringf( bstr );
// returns -0.0

bstr = '01111111110000000000000000000000';
val = fromBinaryStringf( bstr );
// returns NaN

bstr = '01111111100000000000000000000000';
val = fromBinaryStringf( bstr );
// returns Number.POSITIVE_INFINITY

bstr = '11111111100000000000000000000000';
val = fromBinaryStringf( bstr );
// returns Number.NEGATIVE_INFINITY

Examples

var randu = require( '@stdlib/math/base/random/randu' );
var round = require( '@stdlib/math/base/special/round' );
var pow = require( '@stdlib/math/base/special/pow' );
var toFloat32 = require( '@stdlib/math/base/utils/float64-to-float32' );
var toBinaryStringf = require( '@stdlib/math/base/utils/float32-to-binary-string' );
var fromBinaryStringf = require( '@stdlib/math/base/utils/float32-from-binary-string' );

var frac;
var sign;
var exp;
var b;
var x;
var y;
var i;

// Convert random numbers to IEEE 754 literal bit representations and then convert them back...
for ( i = 0; i < 100; i++ ) {
    if ( randu() < 0.5 ) {
        sign = -1.0;
    } else {
        sign = 1.0;
    }
    frac = randu() * 10.0;
    exp = round( randu()*100.0 );
    if ( randu() < 0.5 ) {
        exp = -exp;
    }
    x = sign * frac * pow( 2.0, exp );
    x = toFloat32( x );

    b = toBinaryStringf( x );
    y = fromBinaryStringf( b );

    console.log( '%d => %s => %d', x, b, y );
    console.log( x === y );
}