1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* 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
This commit is contained in:
matz 2006-02-20 00:55:49 +00:00
parent fd50b3cdde
commit c519ca9500
3 changed files with 18 additions and 30 deletions

View file

@ -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> Mon Feb 20 00:57:02 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl.h (OSSL_Debug): should not use __func__. * ext/openssl/ossl.h (OSSL_Debug): should not use __func__.
[ruby-dev:28339] [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> Sat Feb 18 23:58:26 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/tracer.rb (Tracer::Tracer.add_filter): turn on tracer mode * lib/tracer.rb (Tracer::Tracer.add_filter): turn on tracer mode

2
eval.c
View file

@ -755,7 +755,7 @@ struct SCOPE *ruby_scope;
static struct FRAME *top_frame; static struct FRAME *top_frame;
static struct SCOPE *top_scope; static struct SCOPE *top_scope;
static unsigned long frame_unique = 0; static unsigned long frame_unique = 1;
#define PUSH_FRAME() do { \ #define PUSH_FRAME() do { \
struct FRAME _frame; \ struct FRAME _frame; \

View file

@ -436,36 +436,14 @@ class Integer
# The result is positive, no matter the sign of the arguments. # The result is positive, no matter the sign of the arguments.
# #
def gcd(n) def gcd(n)
m = self.abs min = self.abs
n = n.abs max = other.abs
while min > 0
return n if m == 0 tmp = min
return m if n == 0 min = max % min
max = tmp
b = 0
while n[0] == 0 && m[0] == 0
b += 1; n >>= 1; m >>= 1
end end
m >>= 1 while m[0] == 0 max
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
end
return a
end end
# #