c ++数学库pow()函数的时间复杂度?

时间:2012-11-16 14:05:23

标签: c++ time-complexity

我想知道用c ++构建的pow()函数的最坏情况时间复杂度是什么?

3 个答案:

答案 0 :(得分:11)

这取决于底层架构。在最常见的桌面架构x86上,这是一个恒定时间操作。

有关如何在x86上实施该问题的详细信息,请参阅此问题:How to: pow(real, real) in x86

答案 1 :(得分:2)

以下是one implementation,请看一下。可以肯定的是,这是一个相当复杂的代码,有19个特殊情况。时间复杂度似乎不依赖于传入的值。

以下是用于计算pow(x,y)的方法的简短说明:

Method:  Let `x =  2 * (1+f)`
     
      
  • 计算并返回log2(x)两部分:     log2(x) = w1 + w2,    其中w153-24 = 29位尾随零。

  •   
  • 通过模拟多精度来执行y*log2(x) = n+y'    算术,|y'|<=0.5

  •   
  • 返回x**y = 2**n*exp(y'*log2)

  •   

答案 2 :(得分:1)

你没有提到你所使用的系统/架构,所以我们只能猜测。

但是,如果您没有寻找具体信息,只想浏览免费实施的代码 请参阅 http://www.netlib.org/fdlibm/,特别是{{3 }}

有关更多背景信息,请参阅此问题的答案:http://www.netlib.org/fdlibm/w_pow.c