//实现函数,求base的exponent次方. double Power(double base, int exponent) { if(equal(base, 0.0)) { if(exponent < 0) { throw std::exception("invalid exponent.\n"); } else if(exponent >= 0) { return 0.0; } } unsigned int absExponent = (unsigned int) exponent; if(exponent < 0) { absExponent = (unsigned int)(- exponent); } double result = PowerWithUnsignedExponent(base, absExponent); if(exponent < 0) { result = 1.0 / result; } return result; }
double Power(double base, int exponent) { if (equal(base, 0) && exponent < 0) { g_InvalidInput = 1; return 0.0; } unsigned unsigned_exponent = exponent < 0 ? (unsigned int)-exponent : (unsigned int)exponent; double result = PowerWithUnsignedExponent(base, unsigned_exponent); if (exponent<0) { result = 1.0 / result; } return result; }
double Power(double base, int exponent) { if(equal(base, 0.0) && exponent < 0) { return std::numeric_limits<double>::quiet_NaN(); } unsigned int absExponent = (unsigned int)(exponent); if(exponent < 0) absExponent = (unsigned int)(-exponent); double result = PowerWithUnsignedExponent(base, absExponent); if(exponent < 0) result = 1.0/result; return result; }
double pow(double x, int n) { bool g_InvalidInput = false; if(equal(n,0.0) && n < 0){ g_InvalidInput = true; return 0.0; } unsigned int absExponent = (unsigned int) (n); if(n < 0) absExponent =(unsigned int)(-n); double ret = PowerWithUnsignedExponent(x,absExponent); if(n < 0) ret = 1.0/ret; return ret; }