いけがみです。

From: Masahiro TANAKA <masa / ir.isas.ac.jp>
Subject: [ruby-math:00646] Re: Forward: inconsistence in class complex
Date: Wed, 27 Feb 2002 16:40:36 +0900 (JST)
> > あ, あと
> > 
> >   @image -> @imaginary
> > 
> > を変えるって話がありましたよね? 
> 
> @imag がいいです。
real part が @real だから、4文字で揃うのはいいですね。

数学だと Re(z) で real part を、Im(z) で imaginary part を表すことが
多いと思います。だから、より短く @re, @im ではどうでしょうか。
短か過ぎるでしょうか。ともあれ @image でなくすのは賛成です。

complex.rb の中で Numeric に #real, #im が追加されているので、
それも統一するとよりいいと思います。

石塚さん:
>  Complex#to_z[ifr]
z って、どういう意味かぴんとこないです。それは僕だけかもしれません。

現状の Complex#to_[ifr] を使う必要がある具体例を知りたいので、
誰か教えて下さい。たとえば real part を整数に丸めたい気持ちって
どんなときに湧くのでしょうか。

Complex オブジェクトの real(imaginary) part が、Integer であれ、
Float であれ、Rational であれ、「明示的に変換することなしに」
演算ができるのが、むしろ Ruby で扱うメリットなんじゃないかなあ、と思います。
なので、今のところ、僕は to_[ifr] を使う機会はなさそうです。

ともあれ、to_[ifr] の結果が Complex である以上、
to_[ifr] の名前を変えるのは賛成です。

さて、Katins さんの、Complex において 
  <=> が no sense in mathematical meanings 
というのは、必ずしもそうではないんじゃないかなあ、という気もします。
[ruby-talk:34757] でも言われていますね。

しかし、標準で装備するのは変だというのは、もっともだと思う。
norm による同値関係で割ると Complex Numbers 全体の集合がなす体とは違う
構造を持つから、<=> を使う人は注意をしなければいけない。
ごとけんさんの Comparable でなくなるという意見にも同意します。
同値関係で割られた集合は Comparable になっているんですが、
割られた集合と Complex そのものの区別が難しい。

<=> の定義は結構なやましくて、たとえば Polynomial でも partial order
を定義したくなることが頻繁にあるんですが、<=> は全順序で、
かつ a<=>b が 0 を返すときは 「意味として a = b 」じゃなきゃいけないので
結構条件がきついです。余談でした。

選択公理を認めれば、うまい整列順序がありそうなものですが、さて?

ところで alias norm abs はどうでしょうか。
--
池上 大介
Daisuke IKEGAMI <daisu-ik / is.aist-nara.ac.jp>
奈良先端科学技術大学院大学 情報科学研究科
情報処理学専攻 情報基礎学講座 関研究室