$ 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]
@zundan なるほど。Linux では今のところ正答になるバージョンはみつかってないわけですね。
@nagachika 全タイムライン的にそのようです。https://twitter.com/anohana/status/1004192539379884033 によるとLinuxではCのcbrt()が1を超えちゃうとか。
@zundan 最適化オプションで違うのか〜。ま、そうだろうなと思いました(後出し)