ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

用内部调用替换java.lang.Math.log,为什么不用java.lang.Math.exp()?

2019-10-02 17:03:55  阅读:200  来源: 互联网

标签:logarithm java debugging math


我正在重新提出一个我认为太少关注的问题:

为什么这个简单的代码(只是调用Math.log()):

Double thisdouble = Math.log(10);

在jdk1.7.0_11的Math.class的第275行有一个断点:

274 public static double log(double a) {
275    return StrictMath.log(a); // default impl. delegates to StrictMath
276 }

在调试模式下不停止执行?有人可以在他/她自己的机器上尝试这个(我正在使用Eclipse)吗?

调用Math.exp()并调试Math.exp(第254行)函数确实有效…

编辑:上面的答案是,Math.log被Hotspot VM的内部调用所取代,因此从未达到Math类中的代码.现在仍然存在的问题是为什么Math.exp不会被内在的…替换.FWIW我在Core i5 M520(Arrandale)上,但我会严重怀疑该处理器是否支持日志而不是exp. .

解决方法:

我假设Math类中的代码只是一个回退代码,由那些方法调用未被调用某些本机浮点操作代替的架构使用.因此,在您的情况下,该方法实际上不会被调用.但我必须承认,我没有证据支持这一假设.

标签:logarithm,java,debugging,math
来源: https://codeday.me/bug/20191002/1843665.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有