[#11357] [PATCH] an analogue of `long long' — "Nobuyoshi.Nakada" <nobu.nakada@...>

なかだです。

18 messages 2000/11/01
[#11358] Re: [PATCH] an analogue of `long long' — matz@... (Yukihiro Matsumoto) 2000/11/01

まつもと ゆきひろです

[#11364] Re: [PATCH] an analogue of `long long' — EGUCHI Osamu <eguchi@...> 2000/11/02

えぐち@エスアンドイー です。

[#11440] class Character (was: Ruby I18N) — Yasushi Shoji <yashi@...>

[ruby-dev:11428] からの続きですが、threadは切りました。

14 messages 2000/11/08
[#11442] Re: class Character (was: Ruby I18N) — TAKAHASHI Masayoshi <maki@...> 2000/11/08

高橋征義です。用語について。

[#11443] Re: class Character (was: Ruby I18N) — Yasushi Shoji <yashi@...> 2000/11/08

At Wed, 8 Nov 2000 20:44:55 +0900,

[#11520] A problem of Socket methods on Windows — OKA Toshiyuki <oka@...>

岡と申します。

22 messages 2000/11/15
[#11523] Re: A problem of Socket methods on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/15

なかだです。

[#11528] Re: A problem of Socket methods on Windows — matz@... (Yukihiro Matsumoto) 2000/11/15

まつもと ゆきひろです

[#11532] Re: A problem of Socket methods on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/15

なかだです。

[#11534] Re: A problem of Socket methods on Windows — OKA Toshiyuki <oka@...> 2000/11/15

岡です。

[#11535] Re: A problem of Socket methods on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/15

なかだです。

[#11538] Re: A problem of Socket methods on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/15

なかだです。

[#11662] IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org>

In article <E140cR3-0002ls-00@ev.netlab.zetabits.co.jp>,

22 messages 2000/11/28
[#11663] Re: IO (Re: fork problem?) — matz@... (Yukihiro Matsumoto) 2000/11/28

まつもと ゆきひろです

[#11664] Re: IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org> 2000/11/28

In article <E140fxW-0002u9-00@ev.netlab.zetabits.co.jp>,

[#11665] Re: IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org> 2000/11/28

In article <hvor93w5wb8.fsf@coulee.m17n.org>,

[#11669] Re: IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org> 2000/11/29

In article <hvoofz05uwz.fsf@coulee.m17n.org>,

[#11672] Re: IO (Re: fork problem?) — matz@... (Yukihiro Matsumoto) 2000/11/29

まつもと ゆきひろです

[#11675] Re: IO (Re: fork problem?) — Koji Arai <JCA02266@...> 2000/11/30

新井です。

[#11677] Re: IO (Re: fork problem?) — matz@... (Yukihiro Matsumoto) 2000/12/01

まつもと ゆきひろです

[ruby-dev:11414] Re: [PATCH] an analogue of `long long'

From: matz@... (Yukihiro Matsumoto)
Date: 2000-11-07 16:10:49 UTC
List: ruby-dev #11414
まつもと ゆきひろです

In message "[ruby-dev:11410] Re: [PATCH] an analogue of `long long'"
    on 00/11/07, Masahiro Tanaka <masa@stars.gsfc.nasa.gov> writes:

|> と思ったのですが、この部分、乗算・除算を行っていたのを左右ビッ
|> トシフトに置き換えたら、かなり速くなりました。やはり人の意見
|> には耳を傾けた方が良いようです。^^;;;
|
|あらら、そうですか。私がおかしいのかな。

どうなんでしょう。私のところでは1.6.1に比べて倍近く速いみた
いです。修正はこんな感じです。

--- bignum.c	2000/11/02 09:04:53	1.26
+++ bignum.c	2000/11/07 16:10:01
@@ -832,3 +832,10 @@
     while (!yds[ny-1]) ny--;
-    if ((dd = BIGRAD/(BDIGIT_DBL_SIGNED)(yds[ny-1]+1)) != 1) {
+
+    dd = 0;
+    q = yds[ny-1];
+    while ((q & (1<<(BITSPERDIG-1))) == 0) {
+	q <<= 1;
+	dd++;
+    }
+    if (dd) {
 	yy = rb_big_clone(y);
@@ -836,7 +843,7 @@
 	j = 0;
-	num = 0;
+	t2 = 0;
 	while (j<ny) {
-	    num += (BDIGIT_DBL)yds[j]*dd;
-	    tds[j++] = BIGLO(num);
-	    num = BIGDN(num);
+	    t2 += (BDIGIT_DBL)yds[j]<<dd;
+	    tds[j++] = BIGLO(t2);
+	    t2 = BIGDN(t2);
 	}
@@ -844,9 +851,9 @@
 	j = 0;
-	num = 0;
+	t2 = 0;
 	while (j<nx) {
-	    num += (BDIGIT_DBL)xds[j]*dd;
-	    zds[j++] = BIGLO(num);
-	    num = BIGDN(num);
+	    t2 += (BDIGIT_DBL)xds[j]<<dd;
+	    zds[j++] = BIGLO(t2);
+	    t2 = BIGDN(t2);
 	}
-	zds[j] = (BDIGIT)num;
+	zds[j] = (BDIGIT)t2;
     }
@@ -899,5 +907,6 @@
 	    while(i--) {
-		t2 = BIGUP(t2) + zds[i];
-		zds[i] = (BDIGIT)(t2 / dd);
-		t2 %= dd;
+		t2 = (t2 | zds[i]) >> dd;
+		q = zds[i];
+		zds[i] = BIGLO(t2);
+		t2 = BIGUP(q);
 	    }

In This Thread