```
double pow(double x, int n) {
if(x==0) return 0;
if(n==0) return 1;
bool sign=true;
if(n<0) {sign=false;n=-n;}
double res=1.0;
while(n)
{
if(n&1) res=res*x;
x=x*x;
n=n>>1;
}
if(!sign)
{
res=(double)1.0/res;
}
return res;
}
```