From: Toyofuku Date: 1998-03-31T19:21:26+09:00 Subject: [ruby-dev:2005] Re: coerce 豊福@パパイヤです。 けいじゅさん >> Numeric op Matrix の定義は自然なもので論理的な悪影響 >>はないように思えますが、再定義は避けている理由にはどの >>ようなことがあるのでしょうか。 > > 後からrequireして組み込みが行なわれるモジュールが複数ある場合を考えま > す, この場合 Rational/Complex/Matrix などが考えられますよね. で, これ > らのクラスは一応独立でどのような組合せでも使うことができます. > ... > こんな感じで, この方法ですと, > 1. alias名の管理が面倒 > 2. へんなaliasがNumericの下にいっぱいできてしまう. > ということで, 私はあまり推薦できません.  alias の問題は私も coerce や modulo のプログラムで 演算の再定義を書いていて感じました。それで、 ・上の例でいえば old_mul という名前が(C言語の static  関数みたいな感じで)外から見えないようにならないか。 ・hook みたいな仕掛けで本来の * が呼ばれる前に新規追加 部の * が呼ばれるようにできないか。 ということを考えていました。 > Numeric op MatrixをNumeric側で定義することは, NumericがMatirxの性質を > 知っていることになります. このことは, 本来持つ必要のない性質をNumeric > に持たしていることになります.  確かにそうですね。ただ Scalar の件では Numeric という 名前を Scalar に代えただけで実質 Numeric で処理している ような気がしてそれなら直接 Numeric に定義した方が素直で はないかと思ったんです。  それとオブジェクト指向というとレシーバができるだけ頑 張って処理するというイメージがあって Numeric側で頑張った 方がオブジェクト指向っぽいかなという思いもありました。 >> jordan標準形を求めるメソッドあるといいですね。当然 >>ながら高次方程式の根を求めてくれるメソッドもあると >>いいなあ。 > > ほしいですねえ... > でも, rubyでやるのは重いかなって気もするし...  気がします。でも私はガンガン使うことはないだろうから 遅いのでもいいから欲しいです。本格的に使いたくなったら C言語で拡張モジュール書いてもらって。 >> complex ** complex は正しいような気がします。 >>sin と cos は両方とも虚数部の符号が逆のような気がするの >>ですがどうやって確認したものか。 > > うぅ... > 誰か頭の良い数式処理システムor数値処理システムで検算してくれないかなあ...  しまってある UBASIC 見つけだして試してみます。 (どこかのサイトから落とし直した方が早いかな)  どなたか Mathimatica かなんかが近くにあれば (1 + i) ** (1 + i) sin(1 + i) cos(1 + i) を試して答えを教えて下さい。 --- 豊福@パパイヤ unbound@papaya.juice.or.jp toyofuku@juice.or.jp