[#21115] ftpup with IIS — TADA Tadashi <sho@...>
ただただしです。
7 messages
2000/03/01
[#21131] RAA の License — Matsuo Hisanori <hisanori@...>
松尾です。
6 messages
2000/03/02
[#21140] extconf.rb on FreeBSD — NISHIKAWA <nyasu@...3web.ne.jp>
にゃすです。
7 messages
2000/03/02
[#21157] あったらうれしいメソッド to_n, to_n!, to_s! — ogino@...
荻野です。あったらうれしいメソッドということで書いてみます。
16 messages
2000/03/03
[#21158] Re: あったらうれしいメソッド to_n,to_n!, to_s!
— 中村暁史 Nakamura Akifumi <BXQ04723@...>
2000/03/03
[#21167] Re: あったらうれしいメソッド to_n, to_n!, to_s!
— matz@... (Yukihiro Matsumoto)
2000/03/03
まつもと ゆきひろです
[#21159] メソッドの入り口 — ogino@...
荻野です。もうひとつご指導ください。
93 messages
2000/03/03
[#21170] Re: メソッドの入り口
— Shin-ichiro Hara <sinara@...>
2000/03/03
原です。
[#21243] Re: メソッドの入り口
— keiju@... (石塚圭樹)
2000/03/07
けいじゅ@日本ラショナルソフトウェアです.
[#21247] Re: メソッドの入り口
— 中村暁史 Nakamura Akifumi <BXQ04723@...>
2000/03/07
[#21267] 引数コピーとオブジェクト指向 (Re: メソッドの入り口)
— Hideto ISHIBASHI <s34204@...>
2000/03/08
石橋秀仁です。
[#21272] Re: 引数コピーとオブジェクト指向 (Re: メソッドの入り口 )
— 中村暁史 Nakamura Akifumi <BXQ04723@...>
2000/03/08
[#21276] Re: 引数コピーとオブジェクト指向 (Re: メソッドの入り口 )
— nobu.nakada@...
2000/03/09
なかだです。
[#21279] Re: 引数コピーとオブジェクト指向 (Re: メソッドの入り口 )
— ogino@...
2000/03/09
oop未満の世界観の荻野です。
[#21282] Re: 引数コピーとオブジェクト指向
— Tomoyuki Kosimizu <greentea@...2.so-net.ne.jp>
2000/03/09
越水です。
[#21285] Re: 引数コピーとオブジェクト指向
— ogino@...
2000/03/10
荻野です。
[#21293] Re: 引数コピーとオブジェクト指向
— Matsuo Hisanori <hisanori@...>
2000/03/10
松尾です。
[#21297] Re: 引数コピーとオブジェクト指向
— ogino@...
2000/03/10
荻野です。
[#21302] Re: 引数コピーとオブジェクト指向
— 土岐 仁謙 <toki@...>
2000/03/10
土岐です。
[#21371] Re: 引数コピーとオブジェクト指向
— Matsuo Hisanori <hisanori@...>
2000/03/13
松尾です。
[#21374] Re: 引数コピーとオブジェクト指向
— TADA Tadashi <sho@...>
2000/03/13
ただただしです。
[#21389] Re: 引数コピーとオブジェクト指向
— Matsuo Hisanori <hisanori@...>
2000/03/13
松尾です。
[#21365] Re: 引数コピーとオブジェクト指向
— Matsuo Hisanori <hisanori@...>
2000/03/13
松尾です。
[#21370] Re: 引数コピーとオブジェクト指向
— TADA Tadashi <sho@...>
2000/03/13
ただただしです。
[#21286] Re: 引数コピーとオブジェクト指向
— Matsuo Hisanori <hisanori@...>
2000/03/10
松尾です。
[#21173] TkSelection.own の使い方? — Noritsugu Nakamura <nnakamur@...>
13 messages
2000/03/03
[#21177] Re: TkSelection.own の使い方?
— Koji Arai <JCA02266@...>
2000/03/03
新井です。
[#21178] Re: TkSelection.own の使い方?
— Koji Arai <JCA02266@...>
2000/03/03
新井です。
[#21179] Re: TkSelection.own の使い方?
— Noritsugu Nakamura <nnakamur@...>
2000/03/04
[#21190] Re: TkSelection.own の使い方?
— Koji Arai <JCA02266@...>
2000/03/04
新井です。
[#21193] Re: TkSelection.own の使い方?
— Noritsugu Nakamura <nnakamur@...>
2000/03/05
[#21186] 文字列の二進数への変換 — ishihara-k@...3.tiki.ne.jp (Hiroki Ishihara)
文字列クラスには hex と oct というメソッドはありますが、
4 messages
2000/03/04
[#21196] cgi.rb で例外が発生 — RIO-T <rio-t@...>
はじめまして、高石と申します。
7 messages
2000/03/05
[#21233] rdindex — rubikitch <rubikitch@...>
るびきちです。
6 messages
2000/03/07
[#21280] raise non-Exception object — Kenichi Komiya <kom@...3.rim.or.jp>
24 messages
2000/03/09
[#21283] Re: raise non-Exception object
— nobu.nakada@...
2000/03/09
なかだです。
[#21315] Re: raise non-Exception object
— Kenichi Komiya <kom@...3.rim.or.jp>
2000/03/11
[#21342] Re: raise non-Exception object
— nobu.nakada@...
2000/03/12
なかだです。
[#21354] Re: raise non-Exception object
— Kenichi Komiya <kom@...3.rim.or.jp>
2000/03/12
[#21358] Re: raise non-Exception object
— matz@... (Yukihiro Matsumoto)
2000/03/12
まつもと ゆきひろです
[#21397] Re: raise non-Exception object
— Kenichi Komiya <kom@...3.rim.or.jp>
2000/03/13
[#21300] media watch 2000.03.08 — Noritsugu Nakamura <nnakamur@...>
11 messages
2000/03/10
[#21323] Re: media watch 2000.03.08
— Hideto ISHIBASHI <s34204@...>
2000/03/11
石橋秀仁です。
[#21301] date2 の修正 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
15 messages
2000/03/10
[#21384] ruby 1.4.4 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
35 messages
2000/03/13
[#21403] Re: ruby 1.4.4
— Wakou Aoyama <wakou@...>
2000/03/14
青山です。
[#21454] Re: ruby 1.4.4
— Satoshi Nojo <nojo@...>
2000/03/15
Yukihiro Matsumoto さんは書きました:
[#21461] Re: ruby 1.4.4
— Minero Aoki <aamine@...>
2000/03/15
あおきです。
[#21626] Re: ruby 1.4.4
— Wakou Aoyama <wakou@...>
2000/03/24
青山です。
[#21635] Re: ruby 1.4.4
— Minero Aoki <aamine@...>
2000/03/26
あおきです。
[#21648] Re: ruby 1.4.4
— Wakou Aoyama <wakou@...>
2000/03/27
青山です。
[#21400] 式の中で変化する変数の値 — Kazuhiro Nishiyama <nishiyama@...1.tiki.ne.jp>
Rubyでは変数の値が前から見ていってその時点の値になっているのは
5 messages
2000/03/13
[#21442] 配列内のソート — Takayuki Tanaka <tanaka@...>
こんにちは Tanです。
16 messages
2000/03/15
[#21444] Re: 配列内のソート
— 市川 裕隆 <hirotaka.ichikawa@...>
2000/03/15
市川 as Tanukiです。
[#21449] Re: 配列内のソート
— IKARASHI Akira <ikarashi@...3.dion.ne.jp>
2000/03/15
五十嵐です。
[#21475] SJIS 文字列での問題 — Kenji Nagamatsu <knaga@...>
こんにちは、永松と言います。
5 messages
2000/03/16
[#21480] RD 事始め — rubikitch <rubikitch@...>
るびきちです。
7 messages
2000/03/16
[#21481] IO#method for read data from stream — ARIMA Yasuhiro <fit0298@...>
有馬です。
12 messages
2000/03/16
[#21484] Re: IO#method for read data from stream
— Tomoyuki Kosimizu <greentea@...2.so-net.ne.jp>
2000/03/16
越水です。
[#21537] racc 0.13.0 — Minero Aoki <aamine@...>
あおきです。
6 messages
2000/03/19
[#21538] Project Apollo — Kazuhiro Yoshida <moriq.kazuhiro@...>
もりきゅうです。Apollo について。
13 messages
2000/03/19
[#21553] Re: Project Apollo
— 中村暁史 Nakamura Akifumi <BXQ04723@...>
2000/03/20
[#21557] <RE =~ target> and <target =~ RE> — ARIMA Yasuhiro <fit0298@...>
有馬です。
7 messages
2000/03/21
[#21570] Qt module for ruby — Nobuyuki Horie <horie@...>
堀江ともうします。
5 messages
2000/03/21
[#21583] ruby for Web — TAKAHASHI Masayoshi <maki@...>
高橋征義です。
27 messages
2000/03/22
[#21584] Re: ruby for Web
— "NAKAMURA, Hiroshi" <nakahiro@...>
2000/03/22
なひです.
[#21588] Re: ruby for Web
— TAKAHASHI Masayoshi <maki@...>
2000/03/23
高橋征義です。
[#21586] squid log 時刻変換 — Yamada Kenji <kyamada@...>
8 messages
2000/03/23
[#21604] RDtool 0.6.0 pre4 — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp>
Toshです。
10 messages
2000/03/23
[#21611] Re: RDtool 0.6.0 pre4
— rubikitch <rubikitch@...>
2000/03/24
From: Toshiro Kuwabara <toshirok@yb3.so-net.ne.jp>
[#21720] Re: RDtool 0.6.0 pre4
— Toshiro Kuwabara <toshirok@...3.so-net.ne.jp>
2000/04/01
Toshです。
[#21728] Re: RDtool 0.6.0 pre4
— rubikitch <rubikitch@...>
2000/04/01
From: Toshiro Kuwabara <toshirok@yb3.so-net.ne.jp>
[#21649] net-1.1.10 — TAKAHASHI Masayoshi <maki@...>
高橋征義です。net/http 使いたおし中。
17 messages
2000/03/27
[#21655] Re: net-1.1.10
— Minero Aoki <aamine@...>
2000/03/27
あおきです。
[#21659] Re: net-1.1.10
— TAKAHASHI Masayoshi <maki@...>
2000/03/27
高橋征義です。
[#21664] Re: net-1.1.10
— Minero Aoki <aamine@...>
2000/03/27
あおきです。
[#21889] net/http
— TAKAHASHI Masayoshi <maki@...>
2000/04/14
高橋征義です。
[#21906] Re: net/http
— Minero Aoki <aamine@...>
2000/04/14
遅くなりました、あおきです。
[#21669] new version of mod_ruby & eRuby — Shugo Maeda <shugo@...>
前田です。
14 messages
2000/03/28
[#21681] Re: new version of mod_ruby & eRuby
— Wakou Aoyama <wakou@...>
2000/03/29
青山です。
[#21683] Re: new version of mod_ruby & eRuby
— Shugo Maeda <shugo@...>
2000/03/29
前田です。
[#21671] GoF's Flyweight Pattern — Hideto ISHIBASHI <hideto-i@...4u.or.jp>
石橋秀仁です。
10 messages
2000/03/28
[ruby-list:21295] Re: class Polynomial
From:
toyofuku@...
Date:
2000-03-10 07:41:45 UTC
List:
ruby-list #21295
豊福です。
polynomial.rb の factorize を optimize しました。
パッチをメールの最後につけておきます。2割程度速く
なるようです。
setPoly の方の修正はほとんどスピードには効いて
ないようですが、読みやすくはなったと思います。
数式処理に関しては
岩波講座 応用数学 方法9 計算代数と計算幾何
という本をみつけました。因数分解方法やグレブナ基底
の計算方法などものっていました。
さて、もう一つの本題。
実行の profile をとってみたのですが、Array#each
が2割くらいしめています。ですが polynomial.rb の
コードには each はほとんどなくて、調べてみると
each_with_index とfor i in 0..degD という部分が
Array#each の回数に加算されているようです。
each_with_index の方は理解できますが、
for i in 0..degD の方は Range#each ですよね。
簡単なテストプログラムで for in 0..degD の profile
をとってみるとこちらは Range#each と出るところを
見るとバグでしょうか。
ruby のバージョンは 1.4.3 です。
---
豊福
toyofuku@juice.or.jp
*** polynomial.rb.orig Tue Feb 1 03:33:53 2000
--- polynomial.rb Fri Mar 10 16:03:15 2000
***************
*** 530,550 ****
def checkDivZp (dividend,divisor,prime) # true if divisible in Zp
! r=dividend.clone; degR=r.degree # Remainder(dividend)
! degD=divisor.degree; topDm=prime-Number.inv(divisor.array[degD],prime) # Divisor
! while degR>=degD
! q1=(r.array[degR]*topDm)%prime;
! dq=degR-degD
! if q1 != 0;
for i in (0..degD-1)
! r.array[i+dq] += divisor.array[i]*q1
end
end
- r.array[degR]=0
degR -= 1
end
! r.normalize!
! r.array.each{|x| if (x%prime != 0) ;return false;end}
return true
end
--- 530,567 ----
def checkDivZp (dividend,divisor,prime) # true if divisible in Zp
! degR=dividend.degree
! degD=divisor.degree
! if degR < degD
! return false
! end
! darray=divisor.array
! rarray=dividend.array.clone # Remainder(dividend)
! topDm=prime-Number.inv(darray[degD],prime) # Divisor
! while degR>degD
! q1=(rarray[degR]*topDm)%prime;
! if q1!=0
! dq=degR-degD
for i in (0..degD-1)
! rarray[i+dq] += darray[i]*q1
end
end
degR -= 1
end
! q1=(rarray[degR]*topDm)%prime;
! if q1!=0
! for i in (0..degD-1)
! if ((rarray[i] + darray[i]*q1) % prime) != 0
! return false
! end
! end
! else
! for i in (0..degD-1)
! if (rarray[i] % prime) != 0
! return false
! end
! end
! end
return true
end
***************
*** 671,683 ****
! def checkZp(i,prime)
if i == 0;return false;end
flg=false
- degD=DpolyM.degree
while true
- if PolyN.degree<degD*2;return true;end
- if ! Number.checkDivZ?(PolyN.array[0],i,prime);return flg;end
if ! checkDivZp(PolyM,DpolyM,prime);return flg;end
if not resume(degD,prime);return flg;else flg=true;end
return flg # no need for loop now
--- 688,697 ----
! def checkZp(i,prime,degD)
if i == 0;return false;end
flg=false
while true
if ! checkDivZp(PolyM,DpolyM,prime);return flg;end
if not resume(degD,prime);return flg;else flg=true;end
return flg # no need for loop now
***************
*** 685,714 ****
end
!
! def setPoly(d,top,prime)
i=0; c=(prime/2).to_i
while true
DpolyM.array[d]=i
if (d<=0);
- if top;return;end
if (i>0)&&Number.checkDivZ?(PolyN.array[0],i,prime)&&
! checkZp(i,prime)&&(PolyN.degree<DpolyM.degree*2);
throw(:setPolyTag)
end
! else if top&&(i>=1)
! if (PolyN.degree<DpolyM.degree*2);throw(:setPolyTag);end
! if Number.checkDivZ?(PolyN.array[PolyN.degree],i,prime)
! setPoly(d-1,false,prime)
! end
! else
! setPoly(d-1,top,prime)
end
end
- #i=i+1; if i>=prime;return;end
- if top; i=i+1; if i>=prime;return;end
- else if i<=c;i=prime-i-1; if i==c;return;end; else i=prime-i; end
- end
end
end
--- 699,729 ----
end
! def setPoly2(d,prime,degD)
i=0; c=(prime/2).to_i
while true
DpolyM.array[d]=i
if (d<=0);
if (i>0)&&Number.checkDivZ?(PolyN.array[0],i,prime)&&
! checkZp(i,prime,degD)&&(PolyN.degree<degD*2);
throw(:setPolyTag)
end
! else
! setPoly2(d-1,prime,degD)
! end
! if i<=c;i=prime-i-1; if i==c;return;end; else i=prime-i; end
! end
! end
!
! def setPoly(d,prime)
! for degD in 1..d
! for i in 1..prime-1
! DpolyM.array[degD]=i
! if (PolyN.degree<degD*2);throw(:setPolyTag);end
! if Number.checkDivZ?(PolyN.array[PolyN.degree],i,prime)
! setPoly2(degD-1,prime,degD)
end
end
end
end
***************
*** 761,768 ****
#printf "Set prime = %d\n",prime
PolyM.array.replace(PolyN.modulo(prime).array);
! DpolyM.array.fill(0,0..degN)
! catch(:setPolyTag) do; setPoly(degN/2,true,prime);end
if (PolyN.degree>0); Factor.push(PolyN);end
# 最高次を正に揃える. お節介?
--- 776,783 ----
#printf "Set prime = %d\n",prime
PolyM.array.replace(PolyN.modulo(prime).array);
! DpolyM.array.clear
! catch(:setPolyTag) do; setPoly(degN/2,prime);end
if (PolyN.degree>0); Factor.push(PolyN);end
# 最高次を正に揃える. お節介?
***************
*** 773,779 ****
module_function :factorize
module_function :checkZp,:checkDivZp
! module_function :setPoly,:resume,:setVal,:setPolyR
module_function :setV0Tbl,:setV1Tbl,:checkV
end # module Factorization
--- 788,794 ----
module_function :factorize
module_function :checkZp,:checkDivZp
! module_function :setPoly,:setPoly2,:resume,:setVal,:setPolyR
module_function :setV0Tbl,:setV1Tbl,:checkV
end # module Factorization