[#34011] Should --verbose be equal to -v ? — Yugui <yugui@...>

Yuguiです。

15 messages 2008/03/10
[#34012] Re: Should --verbose be equal to -v ? — Yukihiro Matsumoto <matz@...> 2008/03/10

まつもと ゆきひろです

[#34105] rational.rb, complex.rb and mathn.rb — Tadayoshi Funaba <tadf@...>

rational と complex が組み込みになったことで、lib/mathn.rb の意義は薄

29 messages 2008/03/22
[#34106] Re: rational.rb, complex.rb and mathn.rb — Tadayoshi Funaba <tadf@...> 2008/03/22

現時点で rational.rb と complex.rb を残しているのは、それが無難だから

[#34107] Re: rational.rb, complex.rb and mathn.rb — Tadayoshi Funaba <tadf@...> 2008/03/22

で、かなり選択肢を絞った叩き台です。

[#34120] Re: rational.rb, complex.rb and mathn.rb — keiju@... (石塚圭樹) 2008/03/24

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

[#34125] Re: rational.rb, complex.rb and mathn.rb — Shin-ichiro HARA <sinara@...> 2008/03/25

原です。

[#34130] Re: rational.rb, complex.rb and mathn.rb — Tadayoshi Funaba <tadf@...> 2008/03/25

> 私も Complex の組み込みは Rational とは比較にならないくらい、仕様が決め

[#34158] Complex組み込み — Masahiro TANAKA <masa16.tanaka@...>

Complexが組み込みになるそうですが、これはcomplex.rbを踏襲して、

49 messages 2008/03/27
[#34161] Re: Complex組み込み — Shin-ichiro HARA <sinara@...> 2008/03/28

原です。

[#34168] Re: Complex組み込み — Tadayoshi Funaba <tadf@...> 2008/03/28

> 今までの Complex は、complex.rb にほぼ残して、たとえば Rational 成分

[#34186] Re: Complex組み込み — Shin-ichiro HARA <sinara@...> 2008/03/31

原です。

[#34187] Re: Complex組み込み — Tadayoshi Funaba <tadf@...> 2008/03/31

> そうです。Complex が難しい、という話を書いておくと、

[#34193] Re: Complex組み込み — Yukihiro Matsumoto <matz@...> 2008/03/31

まつもと ゆきひろです

[#34203] Re: Complex組み込み — Tadayoshi Funaba <tadf@...> 2008/04/01

> |僕としては、/ 演算子の振舞いについて前向きに検討してほしいです。

[#34215] Re: Complex組み込み — Yukihiro Matsumoto <matz@...> 2008/04/02

まつもと ゆきひろです

[#34166] Re: Complex組み込み — Tadayoshi Funaba <tadf@...> 2008/03/28

> となるようですが、別の実装として、

[ruby-dev:34106] Re: rational.rb, complex.rb and mathn.rb

From: Tadayoshi Funaba <tadf@...>
Date: 2008-03-22 06:25:23 UTC
List: ruby-dev #34106
現時点で rational.rb と complex.rb を残しているのは、それが無難だから
です。これは互換性を重視する立場から一応正当化され得ます。しかし、好ま
しくない点も引き継いでしまうかもしれません。

その気になれば、rational.rb、complex.rb のみならず、mathn.rb も丸ごと
削除することも可能でしょう。仮定の話ですが、これを考えることによって、
何が問題なのか判るかもしれません。

まず、rational.rb には、もはや大したものは残っていません。比較的意味が
あるのは、gcd (及び lcm と gcdlcm) です。

gcd があるのは、rational でつかう為です。石塚さんは、利用者がつかって
も構わない、と考えたと思いますが、基本的には rational でつかう為に存在
します。それ以外に、gcd が rational.rb にある理由はないでしょう。見た
ところ、この gcd はあまり関心を集めてはいないようです。

どれくらい関心がないかといえば、この gcd が話題になるのが、もっぱら 
rational の速度改善に関するに場合で、その為にかなり早い時期から gcd だ
けでも組み込みにしたらどうかという話は度々提案されてきたにも関わらず、
今日まで放置されているくらいです。

gcd については、捨てるか、ruby 本体に吸収するかどちらかになります (メ
ソッド形式か、関数形式かのいづれかで)。

complex.rb では、Math 関数の置き換えがあります。これはたぶん捨てられな
いと思います。

本体に吸収する場合いくつかの選択があると思います。たとえば、python な
どでは、math の他に、cmath があります。ruby でも、そのような形で取りこ
むことが可能でしょう。ただ、この場合、sqrt(aRational) をどこで引き受け
るのか、といったことが問題になるかもしれません。また、ruby の大クラス
主義 (クラスではないが) の風とも馴染まないかもしれません。

あるいは、(今現在 complex.rb を読み込んだときのように) Math の関数を置
き換えて、複素数域にまで拡大することも可能です。速度は若干遅くなるかも
しれません。ruby の Math モジュールは、Time と同様に ruby のおける 
Unix/C 主義の現れと思われるので、その正統性を維持しようとすると、この
手はつかえないかもしれません。

mathn では、** と sqrt を再定義してあり、石塚さん自らいわれるように、
なかなか複雑そうですが、** は複素数対応、sqrt は complex.rb でも再定義
していますが、mathn では有理数にも対応する、ということであると思います。
** と sqrt は存在意義が微妙すぎるので、いづれにしても mathn.rb からは
撤去するしかないと思います。

mathn.rb では、演算子 / の置き換えがありますが、この機能を ruby 本体に
組み込むことも可能ではないかと思います。ruby に、オプション m を追加し、
ruby -m とした場合は、mathn のように演算子を置き換えます。これは実装の
面でも都合がいいかもしれません (現段階では matrix のことは諦めなければ
なりません)。

mathn.rb では Prime もありますが、これは捨てるか、どこかに移す
(lib/prime.rb など) ことも可能だと思います。

In This Thread