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;
} |
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;
} |
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;
} |
ldexp(x, exp) = inf