栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java Math.pow(a,b)时间复杂度

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java Math.pow(a,b)时间复杂度

@Blindy讨论了Java可以采用的 可能 方法

pow

首先,一般情况 不能 重复相乘。对于指数不是整数的一般情况,它将不起作用。(签名

pow
Math.pow(double, double)
!)

在OpenJDK 8代码库中,的本机代码实现

pow
可以通过两种方式工作:

  • 的第一个实现

    e_pow.c
    使用幂级数。C注释中描述了该方法,如下所示:

    * Method:  Let x =  2   * (1+f)
      1. Compute and return log2(x) in two pieces:
    • log2(x) = w1 + w2,
    • where w1 has 53-24 = 29 bit trailing zeros.
      1. Perform y*log2(x) = n+y’ by simulating multi-precision
    • arithmetic, where |y’|<=0.5.
      1. Return xy = 2nexp(y’log2)
  • 中的第二个实现

    w_pow.c
    pow
    对标准C库提供的功能的包装。包装器处理边缘情况。

现在,标准C库可能使用特定于CPU的数学指令。如果确实如此,并且JDK构建(或运行时)选择了第二个实现1,那么Java也将使用这些指令。

但是无论哪种方式,我都看不到任何使用重复乘法的特殊情况代码的痕迹。您可以放心地假设它是

O(1)


1-我尚未研究如何/何时进行选择。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/406334.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号