[#34261] ComplexFloat — "Kenta Murata" <muraken@...>

村田です.

117 messages 2008/04/06
[#34280] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/10

村田です.

[#34286] Re: ComplexFloat — Nobuyoshi Nakada <nobu@...> 2008/04/10

なかだです。

[#34288] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/10

むらたです.

[#34290] Re: ComplexFloat — "U.Nakamura" <usa@...> 2008/04/10

こんにちは、なかむら(う)です。

[#34293] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/10

むらたです.

[#34296] Re: ComplexFloat — "U.Nakamura" <usa@...> 2008/04/10

こんにちは、なかむら(う)です。

[#34298] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/10

むらたです.

[#34300] Re: ComplexFloat — Tanaka Akira <akr@...> 2008/04/10

In article <761216ce0804100221x67f10f12iab12b0e35b6f50e4@mail.gmail.com>,

[#34301] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/10

むらたです.

[#34303] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/04/10

まつもと ゆきひろです

[#34314] Re: ComplexFloat — Tadayoshi Funaba <tadf@...> 2008/04/10

利点としては、拡張ライブラリが書きやすい、ということ。正当化の理由とし

[#34316] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/10

むらたです.

[#34317] Re: ComplexFloat — Tadayoshi Funaba <tadf@...> 2008/04/10

> 私にはいびつな進化という感じはしません.むしろ,せっかく C で実装できるのに

[#34318] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/10

むらたです.

[#34322] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/04/10

まつもと ゆきひろです

[#34328] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/11

むらたです.

[#34331] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/04/11

まつもと ゆきひろです

[#34340] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/11

むらたです.

[#34341] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/04/11

まつもと ゆきひろです

[#34362] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/12

むらたです.

[#34363] Re: ComplexFloat — Tanaka Akira <akr@...> 2008/04/12

In article <761216ce0804120723n16bfbad7qdae90f142978d256@mail.gmail.com>,

[#34367] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/12

むらたです.

[#34368] Re: ComplexFloat — Tanaka Akira <akr@...> 2008/04/12

In article <761216ce0804121011h6132d58fh4916ecbb29d58690@mail.gmail.com>,

[#34369] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/12

むらたです.

[#34364] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/04/12

まつもと ゆきひろです

[#34366] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/12

むらたです.

[#34386] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/04/13

まつもと ゆきひろです

[#34415] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/15

むらたです.

[#34439] Re: ComplexFloat — Shin-ichiro HARA <sinara@...> 2008/04/17

原です。

[#34442] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/04/17

まつもと ゆきひろです

[#34451] Re: ComplexFloat — Shin-ichiro HARA <sinara@...> 2008/04/18

原です。

[#34455] Re: ComplexFloat — Tadayoshi Funaba <tadf@...> 2008/04/18

> 1. ComplexFloat を組込みにし、Complex を標準ライブラリとして提供する。

[#34457] Re: ComplexFloat — Shin-ichiro HARA <sinara@...> 2008/04/20

原です。

[#34458] Re: ComplexFloat — Tadayoshi Funaba <tadf@...> 2008/04/20

> 分かりににくかったですが、これは、ComplexFloat を含めた組込みの数体系が

[#34502] Re: ComplexFloat — sheepman <sh@...> 2008/04/24

こんばんは sheepman です。

[#34601] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/05/07

まつもと ゆきひろです

[#34603] Re: ComplexFloat — keiju@... (石塚圭樹) 2008/05/07

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

[#34614] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/05/08

まつもと ゆきひろです

[#34621] Re: ComplexFloat — keiju@... (石塚圭樹) 2008/05/08

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

[ruby-dev:34381] Re: ComplexFloat

From: "Kenta Murata" <muraken@...>
Date: 2008-04-13 05:08:51 UTC
List: ruby-dev #34381
むらたです.

2008/4/13 Tanaka Akira <akr@fsij.org>:
> In article <761216ce0804121126i557ad854j6e52283f7ef4542@mail.gmail.com>,
>  あと、さらに考えて疑問に思ったんですが、仮に、そういう、すご
>  い、データフロー解析が可能だとしたら、なぜクラスを別にする必
>  要があるのだろうか、という点もあるかもしれません。データフロー
>  解析により、ある Complex のコンストラクタの引数が Float であ
>  ることが判明すれば、そこで生成される Complex オブジェクトは
>  内部が浮動小数点数で表現されることもわかるでしょうから、
>  ComplexFloat という異なるクラスにする必要はないかもしれませ
>  ん。

究極のデータフロー解析,というかそこまでいくと型推論と言ったほうが
近そうですね.

最初に ComplexFloat というクラスの新設を主張した理由は,私には
現在の Complex (および Rational) のコンテナ的な仕様が既に決定事項
であるように思えたからです.

complex.c や rational.c がコミットされるまでは,誰一人として同様の主張を
していませんよね.コミット後に少数の人が「C99 の複素数を持つ実装も
ありますよ」と言っても,良く分からない反論だけが返ってくる状態でした.
私はこのような状況を見て「Complex の中身は変更できないんだな」と判断しました.
そのため,最初に提案する時点では ComplexFloat という新しいクラスを
導入するしかないと考えていました.

>  でも、ComplexFloat が生成されて足し算などの演算にたどり着く
>  ことは判断できるが、Float が生成されて Complex のコンストラ
>  クタにたどり着くのは判断できない、という理由を考えるのはなか
>  なか難しい気がします。少なくとも現時点で私には思いつきません。

私は ComplexFloat を導入して欲しいと言ったときの理由の一つに,
「ComplexFloat は Float で定義されている演算規則には依存しない」
という仕様を持たせられる事を挙げました.

Complex がコンテナであり,Float の演算規則に依存している以上,
Float が生成されて Complex の成分になったところで最適化できない
可能性があります.Float だけではなく,Integer/Rational にも依存するわけで,
コンテナとして実装されている Complex は最適化できない状況が多いです.
例えば,あるクラスの coerce が再定義されてしまうと,普通なら Float を
期待できる文脈もそうでは無くなってしまいます.

ComplexFloat は他のクラスの演算をせず,すべての演算を C で定められた
演算規則で実行するので,他のクラスが再定義されている事には依存せず
ComplexFloat の状態だけで最適化の可能性が決定できます.

という話を何度か説明させていただきましたが,Complex の仕様自体がまだ
流動的であると言われてしまい,最初に ComplexFloat を提案したときの
前提が崩れています.ですから今の時点では,Complex の仕様によっては
ComplexFloat を導入しなくても私が主張した ComplexFloat の利点を実現
できる可能性があります.

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

In This Thread