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 );
}
}