请在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 的一个错误。如果我能找到适当的途径,我将试着跟进他们。

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

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

"jdk.vendor.version" "Zulu 8.58.0.13-CA-macos-aarch64",
"sun.management.compiler" "HotSpot 64-Bit Tiered Compilers",
"java.vm.info" "mixed mode",
"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 impl(与 StrictMath 不同)允许此级别的精度(1 ulp),所以这是可以的,但是测试应该是足够宽松的以便通过。

感谢关于可接受ulp容差的说明。作为一个快速修复,我将测试更改为在比较之前转换浮点类型。这使得构建在Azul上成功。
0

已记录至 https://clojure.atlassian.net/browse/CLJ-2689 并添加了补丁,如果您想尝试请使用。

...