[#34647] fork 不可能な環境での test_argv0_noarg — wanabe <s.wanabe@...>

ワナベと申します。

13 messages 2008/05/11
[#34667] Re: fork 不可能な環境での test_argv0_noarg — Yukihiro Matsumoto <matz@...> 2008/05/13

まつもと ゆきひろです

[#34742] Ruby 1.8.7-preview3 has been released — "Akinori MUSHA" <knu@...>

 Ruby 1.8.7-preview3 をリリースしました。

14 messages 2008/05/18
[#34744] Re: [ruby-list:44957] Ruby 1.8.7-preview3 has been released — Takahiro Kambe <taca@...> 2008/05/19

お疲れ様です。

[#34800] Windows2000上でtrunkがビルドできない — KIMURA Koichi <kimura.koichi@...>

木村です。

18 messages 2008/05/22
[#34801] Re: Windows2000上でtrunkがビルドできない — "U.Nakamura" <usa@...> 2008/05/22

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

[#34824] Re: Windows2000上でtrunkがビルドできない — KIMURA Koichi <kimura.koichi@...> 2008/05/23

木村です。

[#34850] Re: Windows2000上でtrunkがビルドできない — KIMURA Koichi <kimura.koichi@...> 2008/05/26

木村です。

[#34854] Re: Windows2000上でtrunkがビルドできない — "U.Nakamura" <usa@...> 2008/05/26

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

[#34889] Ruby 1.8.7-preview4 test-all failed in OpenSSL::TestSSL — Nobuhiro IMAI <nov@...>

いまいです。

10 messages 2008/05/29

[ruby-dev:34838] Re: ComplexFloat

From: Shin-ichiro HARA <sinara@...>
Date: 2008-05-24 09:32:40 UTC
List: ruby-dev #34838
原です。

> こんばんは sheepman です。
>
> On Fri, 23 May 2008 07:58:12 +0900
> Shin-ichiro HARA <sinara@blade.nagaokaut.ac.jp> wrote:
>
>>> が、Complex#divmod を現在の
>>> Integer#divmod の拡張として定義することは可能でしょうか?
>>> 商を四捨五入とするのは Integer#divmod と一貫しなくなるので
>>> floor のままにして、その条件を満たすことは可能でしょうか?
>> 私もそれを考えたのですが、できないですね。(少なくとも、一般
>> 的な「ノルム」を使っている限りできない。)
>>
>
> 割る数と割られる数の両方が実数か純虚数の場合だけ、普通の整数の除算として
> 定義して、そうでない場合は四捨五入を使うという風にすれば、とりあえずは
> Integer#divmod の拡張として Complex#divmod を定義できると思います。
> 拡張になっているといえるかどうかは微妙ですが。

おお、なるほど。それで良いですね!

できないと言ったのは間違いでした。方法は無数にある。

例えば、次のようにしたらもう少しきれいかな。(複素数の商の実部
虚部を x, y として)

  if x + y < x.floor + y.floor + 1
    [x.floor, y.floor]
  else
    [x.floor + 1, y.floor + 1]
  end

つまり、Integer#/ の自然な拡張として、

  class Complex < Numeric
    def idiv (other)
      a = self * other.conjugate
      b = other.abs2
      z = a / b
      a.real + a.image < (z.real + z.image + 1) * b ? z : z + Complex(1, 1)
    end
  end

In This Thread

Prev Next