From: sheepman Date: 2008-05-23T22:57:59+09:00 Subject: [ruby-dev:34829] Re: ComplexFloat こんばんは sheepman です。 On Fri, 23 May 2008 07:58:12 +0900 Shin-ichiro HARA wrote: > > > が、Complex#divmod を現在の > > Integer#divmod の拡張として定義することは可能でしょうか? > > > 商を四捨五入とするのは Integer#divmod と一貫しなくなるので > > floor のままにして、その条件を満たすことは可能でしょうか? > > 私もそれを考えたのですが、できないですね。(少なくとも、一般 > 的な「ノルム」を使っている限りできない。) > 割る数と割られる数の両方が実数か純虚数の場合だけ、普通の整数の除算として 定義して、そうでない場合は四捨五入を使うという風にすれば、とりあえずは Integer#divmod の拡張として Complex#divmod を定義できると思います。 拡張になっているといえるかどうかは微妙ですが。 Complex(19, 0)/Complex(10, 0) #=> Complex(1, 0) Complex(19, 9)/Complex(10, 0) #=> Complex(2, 1) これが Complex(1, 0) だと ユークリッド整域の公理を満たさない。 -- sheepman / TAMURA Takashi sheepman@sheepman.sakura.ne.jp