Java log2x函数的实现

Java实现 log ⁡ 2 ( ) \log_2() log2()函数

在编译大作业的乘除优化中,我参考了一篇paper里用到了 log ⁡ 2 x \log_2x log2x这一函数,但在复现的时候误用了Java中自带的Math.log()函数(该函数实现的是 ln ⁡ x \ln x lnx的功能),导致优化时出现了偏差,影响了结果,因此在这里讨论实现Java中的 log ⁡ 2 x \log_2x log2x函数

在数学中,有一个换底公式,如下:
log ⁡ a b = ln ⁡ b ln ⁡ a \log_ab = \frac{\ln b}{\ln a} logab=lnalnb
而Java中自带Math.log()方法和Math.log10()方法,可以有助我们实现 log ⁡ 2 x \log_2 x log2x这一函数,转换步骤如下:
log ⁡ 2 x = ln ⁡ x ln ⁡ 2 \log_2x = \frac{\ln x}{\ln 2} log2x=ln2lnx
因此,我们只需要对最后的结果除以 ln ⁡ 2 \ln 2 ln2就行

本题代码如下:

public double log2x(double x) {
  return Math.log(x) / Math.log(2);
}

不光是 log ⁡ 2 x \log_2x log2x,本题可以推导至所有的 log ⁡ m x \log_mx logmx的形式

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值