ldexpf

Multiply a single-precision floating-point number by an integer power of two.

Usage

var ldexpf = require( '@stdlib/math/base/special/ldexpf' );

ldexpf( frac, exp )

Multiplies a single-precision floating-point number by an integer power of two (i.e., x = frac * 2^exp).

var x = ldexpf( 0.5, 3 ); // => 0.5 * 2^3 = 0.5 * 8
// returns 4.0

x = ldexpf( 4.0, -2 ); // => 4 * 2^(-2) = 4 * (1/4)
// returns 1.0

If frac equals positive or negative zero, NaN, or positive or negative infinity, the function returns a value equal to frac.

var x = ldexpf( 0.0, 20 );
// returns 0.0

x = ldexpf( -0.0, 39 );
// returns -0.0

x = ldexpf( NaN, -101 );
// returns NaN

x = ldexpf( Infinity, 11 );
// returns Infinity

x = ldexpf( -Infinity, -118 );
// returns -Infinity

Notes

  • This function is the inverse of frexpf.

Examples

var linspace = require( '@stdlib/array/base/linspace' );
var discreteUniform = require( '@stdlib/random/array/discrete-uniform' );
var ldexpf = require( '@stdlib/math/base/special/ldexpf' );

var frac = linspace( 0.0, 100.0, 10 );
var exp = discreteUniform( 100, 0, 10 );

var i;
for ( i = 0; i < frac.length; i++ ) {
    console.log( 'ldexpf(%d,%d) = %d', frac[ i ], exp[ i ], ldexpf( frac[ i ], exp[ i ] ) );
}

C APIs

Usage

#include "stdlib/math/base/special/ldexpf.h"

stdlib_base_ldexpf( frac, exp )

Multiplies a single-precision floating-point number by an integer power of two (i.e., x = frac * 2^exp).

float x = stdlib_base_ldexpf( 0.5f, 3 ); // => 0.5 * 2^3 = 0.5 * 8
// returns 4.0f

The function accepts the following arguments:

  • frac: [in] float input value.
  • exp: [in] int32_t integer power of two.
float stdlib_base_ldexpf( const float frac, const int32_t exp );

Examples

#include "stdlib/math/base/special/ldexpf.h"
#include <stdint.h>
#include <stdio.h>

int main( void ) {
    float y;
    int i;

    const float frac[] = { 0.5f, 5.0f, 0.0f, 3.5f, 7.9f };
    const int32_t exp[] = { 3, -2, 20, 39, 14 };

    for ( i = 0; i < 5; i++ ) {
        y = stdlib_base_ldexpf( frac[ i ], exp[ i ] );
        printf( "ldexpf(%f, %d) = %f\n", frac[ i ], exp[ i ], y );
    }
}
Did you find this page helpful?