Open In App

ldexp() function in C/C++

The ldexp() is a built-in function in C/C++ gives the product of any variable x and 2 raised to the power of exp by taking two arguments x and exp i.e., x * 2^exp

Syntax:

float ldexp (float x, int exp)
double ldexp (double x, int exp)
long double ldexp (long double x, int exp)
double ldexp (T x, int exp)

Parameter: The function accepts two mandatory parameter x and exp which specifies the two variables described in the definition.

Return Value: The function returns the value of the expression x * 2^exp. It returns a value of type long double, float or double.

Below programs illustrates the above function.

Program 1:




// C++ program to illustrate the
// ldexp() function
#include <bits/stdc++.h>
using namespace std;
  
int main()
{
    double x = 6, result;
    int exp = 2;
  
    // It returns x*(2^exp)
    result = ldexp(x, exp);
  
    // print the result
    cout << "ldexp(x, exp) = " << result << endl;
    return 0;
}

Output:
ldexp(x, exp) = 24

Program 2:




// C++ program to illustrate the
// ldexp() function
#include <bits/stdc++.h>
using namespace std;
  
int main()
{
    double result;
    int x = 20, exp = 9;
    // It returns x*(2^exp)
    result = ldexp(x, exp);
  
    // prints the result
    cout << "ldexp(x, exp) = " << result << endl;
    return 0;
}

Output:
ldexp(x, exp) = 10240

Errors and Exceptions: If the magnitude of the result is too large to be represented by a value of the return type, the function returns HUGE_VAL (or HUGE_VALF or HUGE_VALL) with the proper sign, and an overflow range error occurs.

Below programs illustrates the above error.




// C++ program to illustrate the
// ldexp() function
#include <bits/stdc++.h>
using namespace std;
  
int main()
{
    double result;
    int x = 20, exp = 10000;
  
    // It returns x*(2^exp)
    result = ldexp(x, exp);
  
    // prints the result
    cout << "ldexp(x, exp) = " << result << endl;
    return 0;
}

Output:
ldexp(x, exp) = inf

Article Tags :
C++