예제 #1
0
//实现函数,求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;
}
예제 #2
0
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;
}
예제 #3
0
파일: Power.cpp 프로젝트: elixir67/Sandbox
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;
}
예제 #4
0
 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;
 }