#include <iostream>
#include <string>
#include <cmath>
using namespace std;
#define MIN 1e-6
bool equal(double a, double b)
{
if(fabs(a-b) < MIN)
return true;
return false;
}
#if 0
double myPower(double base, unsigned int expo)
{
double res = 1.0f;
for(int i = 0; i < expo; i++)
{
res *= base;
}
return res;
}
#else
//power() use bit operation
double myPower(double base, unsigned int expo)
{
if(expo == 0)
return 1;
else if(expo == 1)
return base;
double res = myPower(base, (expo>>1));
res *= res;
if(expo & 1)
res *= base;
return res;
}
#endif
double myPower(double base, int expo)
{
if(equal(base, 0))
return 0;
unsigned int uexpo = (expo > 0) ? expo : (-expo);
double res = myPower(base, uexpo);
if(expo < 0)
res = 1.0 / res;
return res;
}
int main()
{
double base = 2.0;
int expo = -4;
double res = myPower(base, expo);
cout << res << endl;
//cout << "Hello world!" << endl;
return 0;
}
implement of power(double base, int expo), without using math library.
最新推荐文章于 2023-12-01 17:54:17 发布