diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-02-20 00:55:49 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-02-20 00:55:49 +0000 |
commit | c519ca950086a31fe2ff8536e45cf04c16892ab1 (patch) | |
tree | ed8b03ae45efee919bcf778b0c456748a0cbcc59 | |
parent | fd50b3cdde34021ab43d8bc49a29bfb0f5bc7a56 (diff) |
* lib/rational.rb (Integer::gcd): replaced by gcd4 in
[ruby-core:07390]. [ruby-core:07377]
* eval.c: initial value for block_unique must be 1.
[ruby-talk:180420]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9965 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | eval.c | 2 | ||||
-rw-r--r-- | lib/rational.rb | 36 |
3 files changed, 18 insertions, 30 deletions
@@ -1,8 +1,18 @@ +Mon Feb 20 01:05:27 2006 Yukihiro Matsumoto <matz@ruby-lang.org> + + * lib/rational.rb (Integer::gcd): replaced by gcd4 in + [ruby-core:07390]. [ruby-core:07377] + Mon Feb 20 00:57:02 2006 GOTOU Yuuzou <gotoyuzo@notwork.org> * ext/openssl/ossl.h (OSSL_Debug): should not use __func__. [ruby-dev:28339] +Sun Feb 19 04:46:29 2006 Guy Decoux <ts@moulon.inra.fr> + + * eval.c: initial value for block_unique must be 1. + [ruby-talk:180420] + Sat Feb 18 23:58:26 2006 Yukihiro Matsumoto <matz@ruby-lang.org> * lib/tracer.rb (Tracer::Tracer.add_filter): turn on tracer mode @@ -755,7 +755,7 @@ struct SCOPE *ruby_scope; static struct FRAME *top_frame; static struct SCOPE *top_scope; -static unsigned long frame_unique = 0; +static unsigned long frame_unique = 1; #define PUSH_FRAME() do { \ struct FRAME _frame; \ diff --git a/lib/rational.rb b/lib/rational.rb index 3f15cfafa8..5220f319f2 100644 --- a/lib/rational.rb +++ b/lib/rational.rb @@ -436,36 +436,14 @@ class Integer # The result is positive, no matter the sign of the arguments. # def gcd(n) - m = self.abs - n = n.abs - - return n if m == 0 - return m if n == 0 - - b = 0 - while n[0] == 0 && m[0] == 0 - b += 1; n >>= 1; m >>= 1 - end - m >>= 1 while m[0] == 0 - n >>= 1 while n[0] == 0 - while m != n - m, n = n, m if n > m - m -= n; m >>= 1 while m[0] == 0 - end - m << b - end - - def gcd2(int) - a = self.abs - b = int.abs - - a, b = b, a if a < b - - while b != 0 - void, a = a.divmod(b) - a, b = b, a + min = self.abs + max = other.abs + while min > 0 + tmp = min + min = max % min + max = tmp end - return a + max end # |