class Solution {
public:
double Power(double base, int exponent) {
unsigned int m;
double result=0.0;
if(equal(base,0.0)&&(exponent<0))
return 0.0;
if(exponent==0)
return 1.0;
m=(unsigned int) abs(exponent);
result=Power_unsigned_int(base,m);
if(exponent<0)
result=1.0/result;
return result;
}
int equal(double n,double m){
if((n - m) > -0.0000001 && (n - m) < 0.0000001){
return 1;
}
else
return 0;
}
double Power_unsigned(double base, unsigned int exponent)
{
double result=base;
for(int i=1;i<exponent;i++)
result=result*base;
return result;
}
double Power_unsigned_int(double base, unsigned int exponent)
{
double result;
if(exponent==0)
return 1.0;
if(exponent==1)
return base;
result=Power_unsigned_int(base,exponent>>1);
result=result*result;
if(exponent&0x1)
result=result*base;
return result;
}
};
public:
double Power(double base, int exponent) {
unsigned int m;
double result=0.0;
if(equal(base,0.0)&&(exponent<0))
return 0.0;
if(exponent==0)
return 1.0;
m=(unsigned int) abs(exponent);
result=Power_unsigned_int(base,m);
if(exponent<0)
result=1.0/result;
return result;
}
int equal(double n,double m){
if((n - m) > -0.0000001 && (n - m) < 0.0000001){
return 1;
}
else
return 0;
}
double Power_unsigned(double base, unsigned int exponent)
{
double result=base;
for(int i=1;i<exponent;i++)
result=result*base;
return result;
}
double Power_unsigned_int(double base, unsigned int exponent)
{
double result;
if(exponent==0)
return 1.0;
if(exponent==1)
return base;
result=Power_unsigned_int(base,exponent>>1);
result=result*result;
if(exponent&0x1)
result=result*base;
return result;
}
};