けいじゅ@日本ラショナルソフトウェアです.

In [ruby-math :00581 ] the message: "[ruby-math:00581] Re: int / int -
> ? ", on Aug/21 12:18(JST) Shin-ichiro HARA writes:

>原です。

>>でも, gcdって割り算の効率とほとんど同じでないですか? 手元の本だと
>>
>>除算: O(n * log n * log log n)
>>gcd:  O(n * (log n)**2 * log log n)
>
>なるほど gcd は除算の log n 倍ですか、それは感覚的に分かります。
>っていうか、除算ってそんなにコスト高いですか?びっくりだなあ。
>それを考えると log n って小さい。ううむ、これは大きいなあ。

でしょ(^^;;;
ちなみに、乗算のorderは除算とほとんど変らないらしいですよ.

>> >流れからすると、石塚さんと正木さんは後者ですね。後者だとすると例
>> >えば 1/3 + 2/3 も int の 1 になるわけですね。それはちょっと気持ち
>> >悪い。
>>
>>私は一応後者を推していますが、「int/int -> int」派の人も前者なら受入れ可
>>能だと言うなら、前者でもかまいません.
>
>石塚さんは本当に前者でもいいんですか? 2 / 1 が Rational の 2 で
>もいいの?

前者後者じゃ何ですから、固定派/非固定派とでも呼びましょうか。
私は完非固定派ではありません. 実際にどっちが、いいかはもうちょっと考
えないと... もしかしたら, 固定の方が得るところが多いかも知れない.

>> > >3. matrix.det みたいなものは, 今のメカニズムではどうやっても綺麗に解決しそ
>> > >   うにない.

>多項式の時には有理関数体まで引き上げて計算するんですか。そうする
>と、また加減乗除で gcd の計算が出てきて、、、効率はどうなんだろ
>う。

>matrix.det の matrix を一般の要素を持つとせず、組み込みの Numeric
>下の要素のみを対象とすると限定して、かつ、有理数も組み込みにする
>ならば、int 要素の matrix を有理数体上で計算するのは、もっともな
>選択である気がします。そうではなく、matrix の要素としてなんでも
>あり(例えば要素として正方行列を取るとか)として det を定義する
>なら、素朴な方法しかないですよね。

うーん. 組み込みの Numeric下の要素のみを対象とすると限定動作保証する。
という方が無難な気がしてきたなあ...

>> > >4. 今回のcomplex#**なんかも根にはこれがある. 

>>ここの前の3つの段落意見が発散しているような(^^;;;
>
>すいません。complex#** 関係について「雑感」を述べてしまいました。
>要約すると「n 個の x の積に x ** n を用いる。後は適宜。」という
>事なんですけど。要約しすぎか。(^^;

なるほど. どうでもいいってことですね.

>>結論としては、rationalでも(型固定なら?)よいよってことですね?
>
>いや、型固定にそんなに拘っているわけでもないんだけど。(元々 Ruby 
>が int/int->rational だったら、今よりもっと Ruby を好んでいたか
>もしれません。ますます言ってる事がバラバラ。)

(^^;;;

>しかし、もしそうなったら、Rational#to_int が定義されたとしても、
>array[i/2] と書いていた所をつい効率を考えて全部 array[i.div 2]
>などと書き直したくなるわけですよ。それでもいい?

というか, そうすべきでしょう. array[i/2]は, 明らかに整除したいんでしょう
から. divはなんなんでarray[i//2] になると嬉しいですが... 

##って空の正規表現と区別つかないかな? そうでもないか...

>私は、現状維持に1票いれるけど、多くの人がそしてまつもとさん
>が rational にするというなら、それでもいいと思います。その最
>期のちがった最後の一人がなかなかウンと言わない気がするけど。

いちばんウンといわなそうなのがまつもとさんだったりして(^^;;;

__
..............................石塚 圭樹@日本ラショナルソフトウェア...
----------------------------------->> e-mail: keiju / rational.com <<---