我一直想知道如何制作一个自己计算功率(例如2 3)的功能.在大多数语言中,这些都包含在标准库中,主要是作为pow(double x, double y),但我怎么能自己编写呢?
我在考虑for loops,但它认为我的大脑进入了一个循环(当我想用非整数指数做一个力量,比如5 4.5或负2-2)并且我疯了;)
那么,我该如何编写一个计算实数幂的函数呢?谢谢
哦,也许重要的是要注意:我不能使用功能(例如exp)的功能,这将使这最终无用.
我正在寻找更快的实现或良好的近似功能提供cmath.
我需要加快以下功能
pow(x,y)exp(z*pow(x,y))哪里z<0.  x来自(-1.0,1.0)并且来自(0.0,5.0 y)
我不确定平方的幂是否可以处理负指数。我实现了以下仅适用于正数的代码。
    #include <stdio.h>
    int powe(int x, int exp)
    {
         if (x == 0)
            return 1;
         if (x == 1)
            return x;
         if (x&1)
                return powe(x*x, exp/2);
         else
                return x*powe(x*x, (exp-1)/2);       
    }
查看https://en.wikipedia.org/wiki/Exponentiation_by_squaring没有帮助,因为以下代码似乎是错误的。
    Function exp-by-squaring(x, n ) 
      if n < 0  then return exp-by-squaring(1 / x, - n );
      else if n = 0  then return  1;
      else if n = 1  then return  x ; 
      else if n is even  then return exp-by-squaring(x * x,  n / 2); …