mastodon.zunda.ninja is one of the many independent Mastodon servers you can use to participate in the fediverse.
Zundon is a single user instance as home of @zundan as well as a test bed for changes of the code.

Administered by:

Server stats:

1
active users

$ ruby -ve 'p Math.cbrt(1.0-2**-52)'
ruby 2.3.3p222 (2016-11-21 revision 56859) [universal.x86_64-darwin17]
0.9999999999999999

かぼー

@nagachika 小飼さんのツイート https://twitter.com/dankogai/status/1004180513228124161 でMath.cbrt(1.0-2**-52)がLinuxのRubyだと正答の0.9999999999999998ではなく1.0000000000000002が返ってくるとあって試してみました。

下記は正答:
ruby 2.3.3p222 (2016-11-21 revision 56859) [universal.x86_64-darwin17]
ruby 2.3.6p384 (2017-12-14 revision 61254) [x86_64-netbsd]
ruby 2.0.0p648 (2015-12-16 revision 53162) [x86_64-netbsd]

下記は誤答でした
ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu]
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]

TwitterDan Kogai on TwitterBy Dan Kogai

@zundan なるほど。Linux では今のところ正答になるバージョンはみつかってないわけですね。

@nagachika 全タイムライン的にそのようです。https://twitter.com/anohana/status/1004192539379884033 によるとLinuxではCのcbrt()が1を超えちゃうとか。

TwitterShiro Kawai on TwitterBy Shiro Kawai

@zundan 最適化オプションで違うのか〜。ま、そうだろうなと思いました(後出し)

@nagachika Apple LLVM version 9.1.0 (clang-902.0.39.2)だと-O0から-O3までどれでも0.99999999999999989になりますねー(出先でglibcとgccが手元にない)

@zundan おそらく Linux というより glibc に依るんでしょうね。といいつつわたしも今ぱっと試す環境がない。

@nagachika ですねー。NetBSD 8.0_RC1 amd64でgcc (nb2 20150115) 4.8.4だと-O0から-O3まで正答でした。

$ ldd a.out
a.out:
-lm.0 => /usr/lib/libm.so.0
-lgcc_s.1 => /usr/lib/libgcc_s.so.1
-lc.12 => /usr/lib/libc.so.12
$ ls -l /usr/lib/libc.so.12
lrwxr-xr-x 1 root wheel 26 Sep 24 2015 /usr/lib/libc.so.12@ -> ../../lib/libc.so.12.193.1

(ライブラリのバージョンのみかたがわからにゃい)

@nagachika 見るべきはlibmですね

ls -l /usr/lib/libm.so.0
lrwxr-xr-x 1 root wheel 22 Sep 24 2015 /usr/lib/libm.so.0@ -> ../../lib/libm.so.0.11