2024年Clojure调查中分享您的想法!

欢迎!请查阅关于页面以了解更多有关此功能的信息。

0
Clojure
已关闭

这并不是一个Clojure的问题,但仅供参考... 我在我的M1 MacBook Air上使用Azul Java 8。

https://www.azul.com/downloads/

事实证明,在这个JVM中,java.lang.Math/exp并不完全正确。特别是,构建日志显示

[java] FAIL in (test-exp) (math.clj:74)
[java] expected: (= m/E (m/exp 1))
[java]   actual: (not (= 2.718281828459045 2.7182818284590455))

它看起来在double的最后一位是错误的。我选择Azul是因为它声称在M1上是ARM原生,但可能在M1运行一些在模拟模式下的Intel二进制文件时存在一些复杂性。不确定具体发生什么,但我想提到这个不一致性,以防其他人遇到类似情况。我假设问题出在Azul JVM的bug上。如果我能找到正确的联系方式,我将尝试联系他们。

顺便问一下,M1 Mac上有更好的ARM Java可以用吗?

以下是我的一些System/getProperties的结果

"jdk.vendor.version" "Zulu 8.58.0.13-CA-macos-aarch64",
"sun.management.compiler" "HotSpot 64-Bit Tiered Compilers",
"java.vm.info" "混合模式",
"java.vendor.url" "http://www.azul.com/",
"java.vm.version" "25.312-b07",
"java.vendor" "Azul Systems, Inc.",
"java.vm.specification.version" "1.8",
"java.runtime.version" "1.8.0_312-b07",
"java.vm.vendor" "Azul Systems, Inc.",
"java.vm.name" "OpenJDK 64-Bit Server VM",
"java.version" "1.8.0_312",
"os.arch" "aarch64",
"java.specification.version" "1.8",
"sun.arch.data.model" "64",
"java.class.version" "52.0",
"os.name" "Mac OS X",
"os.version" "12.1"

关闭时的注释为: 在1.11.0-beta1中发布

2 答案

0

已选择
 
最佳答案

在Math实现中(StrictMath不同),允许此类精度(1 ulp),所以这是可以接受的,但最好让测试足够宽容以通过。

感谢关于可接受ulp容差的详细信息。作为一个快速的修补程序,我将测试更改为在比较之前将其转换为浮点数。这允许与Azul一起成功构建。
0

已记录为 https://clojure.atlassian.net/browse/CLJ-2689,并添加了一个补丁,如果您想尝试它。

...