The result of Math.log(3.0) is different on x86_64 and aarch64?
bzhaojyathousandy at gmail.com
Sat Jul 27 01:13:12 UTC 2019
Hi team, any idea about this issue? Please help to solve or location.
Tianhua huang <huangtianhua223 at gmail.com> 于2019年7月25日周四 下午5:54写道：
> In fact, we found the differences when we took tests of apache/spark,
> there are some related tests failed.
> And till now we also found the results for 'power' function is different
> between x86_64 and aarch64 for some cases, for an example:
> on x86_64:
> scala> import java.lang.Math._ import java.lang.Math._ scala>
> abs(-83028485) res3: Int = 83028485 scala> var a = -83028485 a: Int =
> -83028485 scala> abs(a) res4: Int = 83028485 scala> math.log(abs(a)) res5:
> Double = 18.234694299654787 scala> pow(10, math.log(abs(a))) res6: Double =
> on aarch64:
> scala> var a = -83028485 a: Int = -83028485 scala> abs(a) res38: Int =
> 83028485 scala> math.log(abs(a)) res39: Double = 18.234694299654787 scala>
> pow(10, math.log(abs(a))) res40: Double = *1.71669957511859558E18*
> So the algorithm of these math functions(power, log, maybe there are
> others) is different on platforms? How or where I can find these
> information? Could anyone help us? Thank you very much.
> I don't know the behavior is correct or not, or maybe the tests of spark
> is not appropriate?
> On Thu, Jul 25, 2019 at 4:11 PM Tianhua huang <huangtianhua223 at gmail.com>
>> Sorry to disturb you again, I took some tests of java.lang.Math.log
>> function on aarch64 server, I met a strange case, the result of
>> Math.log(3.0) is different with x86_64:
>> on x86_64:
>> scala> Math.log(3.0) res50: Double = 1.0986122886681098
>> but on aarch64:
>> scala> Math.log(3.0) res19: Double = 1.0986122886681096
>> Then I tried Math.log(4.0), Math.log(5.0) and some other numbers, the
>> results on x86_64 and aarch64 are same, why Math.log(3.0) is so special?
>> this confused me much, I think the result of
>> Math.log(Double) should be same across platforms, right?
More information about the jdk-dev