[#28509] Rational — Tadayoshi Funaba <tadf@...>

ふなばです。

49 messages 2006/04/05
[#28510] Re: Rational — keiju@... (石塚圭樹) 2006/04/05

けいじゅ@いしつかです.

[#28512] Re: Rational — Tadayoshi Funaba <tadf@...> 2006/04/05

ふなばです。

[#28513] Re: Rational — Shin-ichiro HARA <sinara@...> 2006/04/05

原です。

[#28514] Re: Rational — keiju@... (石塚圭樹) 2006/04/05

けいじゅ@いしつかです.

[#28517] Re: Rational — Yukihiro Matsumoto <matz@...> 2006/04/06

まつもと ゆきひろです

[#28520] Re: Rational — keiju@... (石塚圭樹) 2006/04/06

けいじゅ@いしつかです.

[#28521] Re: Rational — Yukihiro Matsumoto <matz@...> 2006/04/06

まつもと ゆきひろです

[#28525] Re: Rational — keiju@... (石塚圭樹) 2006/04/06

けいじゅ@いしつかです.

[#28527] Re: Rational — Shin-ichiro HARA <sinara@...> 2006/04/06

原です。

[#28536] Re: Rational — Shin-ichiro HARA <sinara@...> 2006/04/10

原です。

[#28537] Re: Rational — keiju@... (石塚圭樹) 2006/04/10

けいじゅ@いしつかです.

[#28589] Float#div and Float#divmod [AGAIN] — Shin-ichiro HARA <sinara@...>

原です。

16 messages 2006/04/23

[ruby-dev:28584] Re: rational 1.01

From: Shin-ichiro HARA <sinara@...>
Date: 2006-04-18 13:25:45 UTC
List: ruby-dev #28584
原です。

>ふなばです。
>
>試しました。例のバグは直ったようですが、まだ文のなかに宣言が混ってるん
>で、これがまずいと思います (デバッグ用のコードも)。

すいません。せっかくパッチで指摘していただいたのに、後半半分を
見落としました。

>それと、
>
>Rationalize(Rational(0.3), 0.1) => 5404319552844595/18014398509481984
>
>これがおかしいと思います。

有理数を Rationalize するのはおかしいと思ったので、素通しさせたので
すが、第2引数に精度を指定すれば意味があるので、

Rational(0.3).rationalize(0.1) => 1/3

となるようにしました。ただし引数がないと、

Rational(0.3).rationalize => 5404319552844595/18014398509481984

です。

>さらに、0.3.rationalize(0.1) が可能なら、0.3.to_r.rationalize(0.1) も
>可能であってよい気がしますし、"3e-33".rationalize(0.1) とできてもいい
>のかもしれません。

そうですね。全ての rationalize メソッドは、引数を持つようにしました。

>以上を前提に、関数としての Rationalize はなくしてもいい、と思います。
>このために、Kernel 空間をつかわなくてもいいような気がするわけです。

確かに Rationalize というクラスがないのに Rationalize() 関数があ
るというのも変なので、なくしました。
>補足です。Rationalize は、Common Lisp の rationalize と Scheme のそれ
>を合せたような感じになっていると思います。

Scheme には rationalize->exact というのもありますね。いずれにして
も有理数を rationalize するという言葉使いはおかしくて、Haskell の
approxRational という名前が適当かもしれない。第2引数を取らない
Common Lisp の rationalize は納得できます。
>現状の則していえば、aRational.rationalize が引数を取れないのであれば、
>Rationalize も同様であるべきで、Rationalize(aRational...) の場合、第二
>引数をとれるのはおかしい、ということになると思います。
>
>ただ、第二引数を受けとることができて、それに基いて単純化できるので、第
>二引数がある場合は、そうしてよいと思います。aRational.rationalize も引
>数を取ってよいと思います。僕としては、そういうものだろう、と思っていた
>のですが、どうでしょう。

同意します。言葉はおかしいけど、aRational.rationalize にも引数を
とることを許しました。論理的にあり得るので。

>あと、ついでですが、 Rational#- の結果がおかしいです。
>
>Rational(1,2) - 0.5 => 1.0

今までこんなのが残っていたとは、有理数から小数を引いた人がいなかった?
test suits には入っていたのですが、同名の2つのテスト関数が後にあって、
無効になっていました。がくっ。



In This Thread