原です。

|At 13:19 01/04/04 +0900, you wrote:
|児玉 です.

|> 私の方もバージョンを1.1にしました。今度もブッフバーガーアルゴリズムは
|> そのままなんですが、メソッドのチューンアップをしたところ、速度が3倍以
|> 上(当社比)早くなりました。(Kodamaライブラリに勝った。^^;)
|
|負けたぁ.
|僕の方は pqueue の採用で遅くなった.
|まあ, 速くなる場合もあるはずと期待してはいるが...

やっぱり速くはなってるみたいです。ただなぜか mathn を入れた方が速いこ
と多くて、やっぱり mathn を require 可能な構造にしといたらいいのでは無
いかと。

|>    def foo
|>      @foo ||= (X)
|>    end
|> 
|> とするだけです。数学関数は常に同じ値を返すメソッドを多数回呼ぶ場合がある
|> ので、効果絶大です。お試しあれ。ただしこうすると、メソッドが自分の状態を
|> 変化させる事になるので、幾つか注意が必要になってきますが。
|
|項順序の負荷は大きいようなので, 
|total degree で採用すると, これはきくかも.

児玉さんの実装では各項は整列させて持ってますよね。私はHashでバラバラに
持っているので、degree の計算はかなりコスト高だったので効果があったみ
たいです。


ところで、新バージョンでは、ちょっと改良型のブッフベルガーをアルゴリズ
ムを実装してみたところ、また4,5倍早くなりました。これで当初に比べて
10倍以上速くなってる。

いえ、別にスピード競争する気はないんですが(^^;、例えばこの計算がけっこう
待たされていたのが、そうでもなくなりました。

Basis of:
-2wx + 3x^2 + 2yz
-2wy + 2xz
-2wz + 2xy - 2z
x^2 + y^2 + z^2 - 1

Are:
w - 3/2x - 3/2yz - 167616/3835z^6 + 36717/590z^4 - 134419/7670z^2
x^2 + y^2 + z^2 - 1
xy - 19584/3835z^5 + 1999/295z^3 - 6403/3835z
xz + yz^2 - 1152/3835z^5 - 108/295z^3 + 2556/3835z
y^3 + yz^2 - y - 9216/3835z^5 + 906/295z^3 - 2562/3835z
y^2z - 6912/3835z^5 + 827/295z^3 - 3839/3835z
yz^3 - yz - 576/59z^6 + 1605/118z^4 - 453/118z^2
z^7 - 1763/1152z^5 + 655/1152z^3 - 11/288z

#この計算の途中で係数が Bignum になるので、Ruby のバグをみつけること
#ができました。([ruby-dev:12742]