ldexp फंक्शन x * 2^exp की गणना करता है। यह फ्लोटिंग-पॉइंट मानों को पावर-ऑफ-टू से कुशलतापूर्वक स्केल करता है।
सिंटैक्स
double ldexp(double x, int exp); float ldexpf(float x, int exp); long double ldexpl(long double x, int exp);
उदाहरण
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double a = 10.0;
int exp = 2;
double res = ldexp(a, exp); // 10 * 2^2 = 40
cout << "Result: " << res << endl; // 40
// ओवरफ्लो उदाहरण
exp = 5000;
res = ldexp(a, exp);
cout << "Overflow result: " << res << endl; // inf
return 0;
}
आउटपुट
Result: 40 Overflow result: inf
व्याख्या
ldexp(x, n)गणितीय रूप सेx * 2^nके बराबर है।- यह
x * pow(2, n)से तेज और अधिक सटीक है क्योंकि यह सीधे एक्सपोनेंट मैनिपुलेट करता है। - ओवरफ्लो पर
HUGE_VAL(याinf) रिटर्न करता है,errno = ERANGEसेट करता है। - अंडरफ्लो पर 0 रिटर्न कर सकता है।
संबंधित फंक्शन्स
frexp: विपरीत ऑपरेशन - फ्लोटिंग-पॉइंट को मैंटिसा और एक्सपोनेंट में विघटित करता है।scalbn,scalbln: समान लेकिनexpटाइप अलग (long,long long)।