ldexpf Function

Calculates the result of a single precision floating-point number multiplied by an exponent of 2.

Include

<math.h>

Prototype

float ldexpf(float x, int ex);

Arguments

x
floating-point value
ex
integer exponent

Return Value

Returns x * 2^ex. On an overflow, ldexp returns inf and on an underflow, ldexpf returns 0.

Remarks

A range error will occur on overflow or underflow.

Example

#include <math.h>
#include <stdio.h>
#include <errno.h>

int main(void)
{
  float x,y;
  int n;

  errno = 0;
  x = -0.625F;
  n = 2;
  y = ldexpf (x, n);
  if (errno)
    perror("Error");
  printf("For a number = %f and an exponent = %d\n", x, n);
  printf("  ldexpf(%f, %d) = %f\n\n", x, n, y);

  errno = 0;
  x = 2.5F;
  n = 3;
  y = ldexpf (x, n);
  if (errno)
    perror("Error");
  printf("For a number = %f and an exponent = %d\n", x, n);
  printf("  ldexpf(%f, %d) = %f\n\n", x, n, y);

  errno = 0;
  x = 15.0F;
  n = 10000;
  y = ldexpf (x, n);
  if (errno)
    perror("Error");
  printf("For a number = %f and an exponent = %d\n", x, n);
  printf("  ldexpf(%f, %d) = %f\n\n", x, n, y);
}

Example Output

For a number = -0.625000 and an exponent = 2
  ldexpf(-0.625000, 2) = -2.500000

For a number = 2.500000 and an exponent = 3
  ldexpf(2.500000, 3) = 20.000000

Error: range error
For a number = 15.000000 and an exponent = 10000
  ldexpf(15.000000, 10000) = inf