gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 09:25:59 30 4
gpt4 key购买 nike

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

为什么这个简单的代码(只是调用 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 }

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

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

编辑:上述问题的答案是 Math.log 被 Hotspot VM 的内部调用所取代,因此永远不会到达 Math 类中的代码。现在剩下的问题是为什么 Math.exp 没有被内在的... FWIW 我在 Core i5 M520 (Arrandale) 上,但我会严重怀疑该处理器是否支持记录而不是为了 exp...

最佳答案

我会假设 Math 类中的代码只是一个后备代码,供那些方法调用未被调用某些 native 浮点运算代替的体系结构使用。因此,在您的情况下实际上不会调用该方法。不过,我必须承认,我没有证据支持这一假设。

关于java.lang.Math.log 替换为内部调用,为什么不用 java.lang.Math.exp()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15085294/

30 4 0