algorithm - 浮点指数求幂算法

标签 algorithm math zoho exponentiation

我必须编写一种算法,对整数或 float 参数中的基数(整数或 float )取幂。我为 Deluge (zoho.com) 编写了这个算法,但它只能使用整数指数:

float math.potencia(float base, int expoente)
{  
   if(expoente>0)
    {
    base = base * thisapp.math.potencia(base, (input.expoente  -  1));
    }
    else if (expoente == 0)
    {
    base = 1;
    }
    return base;
}

(Deluge 没有增强运算符或函数)。谢谢!

最佳答案

假设可以使用sqrt,可以使用如下算法:

double EPS = 0.0001;

double exponentiation(double base, double exp) {
  if(exp >= 1) {
    double temp = exponentiation(base, exp / 2);
    return temp * temp;
  } else {
    double low = 0;
    double high = 1.0;

    double sqr = sqrt(base);
    double acc = sqr;    
    double mid = high / 2;

    while(fabs(mid - exp) > EPS) {
      sqr = sqrt(sqr);

      if (mid <= exp) {
          low = mid;
          acc *= sqr;
      } else {
          high = mid;
          acc *= (1 / sqr);
      }

      mid = (low + high) / 2;
    }

    return acc;
  }
}

关于algorithm - 浮点指数求幂算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4432075/

相关文章:

php - 将 Zoho CRM 链接到 Kashflow 时在何处存储 XML 或 PHP 文件

algorithm - WinRar 使用了哪种数据压缩算法?

java - 将数组拆分为 X 长度的片段

algorithm - 您如何缓解拜占庭 Paxos 中的提案编号溢出攻击?

javascript - 绕圆旋转一条线

math - bc算术错误

algorithm - 从 (n^j) 计算 (n + 1)^j 的最快方法

java - 寻找不可约分数

Zoho 洪水 : How can I insert line breaks or start a new line to e-mail message?

dns - Gitlab页面和CNAME记录冲突