SML#実数丸めバグを確認して力尽きた様子
@keita44_f4 手元にあるならSML'97の仕様について教えて欲しいです。Real.roundの仕様を確認出来ませんか? これ> http://t.co/BJQdQ27O3J が正しいのかが問題です。 #smlsharp
2013-10-26 23:26:11@eldesh smlsharp 1.2.0で確認.# round 5.5 ---> val it 5 : int , round 5.6 ---> val it 5 : int,6にならないwwwあかんやつやwwwww
2013-10-26 23:49:30@eldesh ちなみに黄色い本にはBasis Libraryについての内容は載ってませんでした.[18]参照→Reppyさんのリファレンスマニュアル(準備中)を参照になってました.
2013-10-27 00:01:18@eldesh NJはちゃんと近い方にまるめてくれますね..5のときはちゃんと偶数ですし.# はそもそも間違えてtruncを呼んでしまっているので,すべて切り捨てになりますね.
2013-10-27 00:02:02@keita44_f4 ただ、Real.realRoundの方はnearest toなのでそっちを呼ぶだけではだめなんじゃないでしょうか?
2013-10-27 00:03:59@keita44_f4 _import "round" でもだめっぽいので、C言語側を調べているのですが、ポータブルに最近接遇数丸めを実装する方法に確信が持てない状況です(rintっぽい気はする)。
2013-10-27 00:10:26@eldesh val testRound = _import "round" : real -> real; したら正しく動くように見えるのですが.環境差?例えば1.4 -> 1.0, 1.5 -> 2.0, 1.6 -> 2.0, と正しく帰ってきます
2013-10-27 00:31:52@eldesh Real.smlとReal32.smlの中身を見てると,floor,ceil,round,truncの_importとその次の関数定義で4つの順番が入れ違っている.この順番の入れ違いで間違えた予感…
2013-10-27 00:33:47@eldesh おお,ほんとだ!2.5で3が帰ってきた.すいません,確認不足でした.1.5前後でやって満足してました(´・∀・`)
2013-10-27 00:38:40@eldesh ちなみにrintを_importすると,round実行前後に限らず正しく動いているように私の手元では見えるのですが.そちらではなにか問題が?
2013-10-27 00:40:06@keita44_f4 信じがたいことに、round 1.5;を評価してから_import "rint";rint 1.5;するのとrepl開始直後にimportしてrint 1.5;すると、それぞれ1.0, 2.0となります。
2013-10-27 00:47:02@eldesh ふおおおおおおおwwwwwwSML# のround使ってからrintするとおかしくなるうううううううう.再現しました.これはわけがわからない…!
2013-10-27 00:57:02@no_maddojjjjjj 私とよんたさんで実数丸めバグの(どこが間違ってるのか)確認しようとしてるのですが、あるべき挙動に自信が持てないのです。
2013-10-27 01:01:03