GNU科学图书馆,电力功能效率

时间:2014-07-26 17:52:23

标签: c

我正在浏览GSL库。我正在粘贴他们用来找到双数字的力量的函数。

double gsl_pow_int(double x, int n)
{
  double value = 1.0;

  if(n < 0) {
    x = 1.0/x;
    n = -n;
  }

  /* repeated squaring method 
   * returns 0.0^0 = 1.0, so continuous in x
   */
  do {
     if(n & 1) value *= x;  /* for n odd */
     n >>= 1;
     x *= x;
  } while (n);

  return value;
}

但如果他们使用它们会不会更有效率?

double gsl_pow_int(double x, int n)
    {
      double value = 1.0;

      if(n < 0) {
        x = 1.0/x;
        n = -n;
      }

      /* repeated squaring method 
       * returns 0.0^0 = 1.0, so continuous in x
       */
      do{
        if(--n)value*=x;
    }while(n);
    return value;
 }

1 个答案:

答案 0 :(得分:2)

你的代码甚至没有正确处理负面力量!如何宣称您的代码已经过优化。

  

另外,接下来,只是减少程序中的空间并不会使你的   代码更加优化。他们的代码具有更高的可读性和更多   适当的缩进比你的!他们的代码适合否定   权力也更加优化!

另外,接下来,像&和右移>>这样的按位逻辑运算被认为比你所做的更有效。