From: Shin-ichiro HARA Date: 2008-05-13T17:38:27+09:00 Subject: [ruby-dev:34674] Re: ComplexFloat 原です。 Tanaka Akira wrote: > > In article <4808653F.80607@blade.nagaokaut.ac.jp>, > > Shin-ichiro HARA writes: > > >> >> 余談ですが、整数成分の Complex 同士の除算 / が、ガウスの整数としての商 >> >> になっていないのが残念です。そうしようとすると複雑になってしまうし。 > > > > 気になったんですが、ガウスの整数としての商って、どういうもの > > なんでしょうか? > > > > 検索したところ、普通の複素数としての商であるような記述が見つ > > かったんですが、それでいいんでしょうか? よく使われるガウス整数の商は、普通の複素数の商を取り、実部、 虚部それぞれ四捨五入して整数に丸めたものです。 実はそうでなければならない、というわけでなく、商と余りがふさ わしい条件(正確にはユークリッド整域の公理)を満たす形で得ら れればいいので、商の定義は他にもあり得ます。が、いずれにして も現在の Ruby の整数成分の Complex の / はこの条件を満たす商 ではなく、使い道があまりないみたいです。 ちなみに、Ruby の普通の整数の / は、ユークリッド整域の商になっ ているのが、ありがたいです。 余談ですが... ガウスの整数は、ユークリッドの互除法のアルゴリズムが適用でき るし、素因数分解できたり、普通の整数とパラレルな構造を持って 面白いです。もし Complex の / が四捨五入だったら、 [ruby-dev:27730] Re: Matrix class is broken without mathn にある「整数行列の行列式を高速に計算するアルゴリズム」が、そ のままのコードでガウス整数に適用できるはずなんだけど、無い話を 惜しがってもしかたがないですね。