むらたです.

2008/4/10 Tanaka Akira <akr / fsij.org>:
> In article <761216ce0804100236i49f909ccn9b54b186678b22b6 / mail.gmail.com>,
> > 例えば FL_COMPLEX_FLOAT のようなフラグを使うということでしょうか?
>  > それは可能ですし,そのように変更するだけなら難しくないような気がします.
>  > さらに,そのように変更しても TYPE(obj) を使う場合とほとんど同じコストで
>  > 状態を区別できますね.
>  > ただし,変更後の complex.c のメンテナンスは大変かもしれません・・・
>
>  なるほど。むらたさんの希望には別のクラスを作るということは入っ
>  ていないわけですね。

そうですね.Ruby レベルで区別する必要がないので,新しいクラスの作らな
ければならない,というわけではありません.

クラスを新設するか,Complex の実装の中でやりくりするか,
これらのどっちがやりやすいかという問題だと思っています.
前者の方が簡単だったので,まだ Complex -> ComplexFloat の変換など
実装していない仕様はありますが,例の patch では ComplexFloat という
クラスを新設しました.

>  では、いまのままの Complex で、C レベルで
>  Complex な VALUE から double _Complex を取り出す関数及び
>  double _Complex から Complex な VALUE を生成する関数を新設す
>  るというのならどうでしょうか?

その関数の中では毎回実部と虚部の型を独立にチェックし必要なら変換する
処理が行なわれます.これは,FL_COMPLEX_FLOAT や TYPE マクロ
で区別する場合と比較して無駄が多いので避けたいです.

そのような関数*も*提供するということでしたら,場合によっては便利で
しょうから賛成です.

-- 
Kenta Murata
OpenPGP FP = FA26 35D7 4F98 3498 0810 E0D5 F213 966F E9EB 0BCC