Skip to content

Commit 5d53d59

Browse files
committed
merge revision(s) 13785:
* numeric.c (fix_pow): returns infinity for 0**-1. [ruby-dev:32084] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_5@16917 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
1 parent aab56e1 commit 5d53d59

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

ChangeLog

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
Sun Jun 8 03:03:27 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
2+
3+
* numeric.c (fix_pow): returns infinity for 0**-1. [ruby-dev:32084]
4+
15
Sun Jun 8 02:57:32 2008 James Edward Gray II <jeg2@ruby-lang.org>
26

37
Merged 13781 from trunk.

numeric.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2204,6 +2204,7 @@ static VALUE
22042204
fix_pow(x, y)
22052205
VALUE x, y;
22062206
{
2207+
static const double zero = 0.0;
22072208
long a = FIX2LONG(x);
22082209

22092210
if (FIXNUM_P(y)) {
@@ -2213,7 +2214,10 @@ fix_pow(x, y)
22132214
if (b == 0) return INT2FIX(1);
22142215
if (b == 1) return x;
22152216
a = FIX2LONG(x);
2216-
if (a == 0) return INT2FIX(0);
2217+
if (a == 0) {
2218+
if (b > 0) return INT2FIX(0);
2219+
return rb_float_new(1.0 / zero);
2220+
}
22172221
if (a == 1) return INT2FIX(1);
22182222
if (a == -1) {
22192223
if (b % 2 == 0)
@@ -2237,7 +2241,9 @@ fix_pow(x, y)
22372241
x = rb_int2big(FIX2LONG(x));
22382242
return rb_big_pow(x, y);
22392243
case T_FLOAT:
2240-
if (a == 0) return rb_float_new(0.0);
2244+
if (a == 0) {
2245+
return rb_float_new(RFLOAT(y)->value < 0 ? (1.0 / zero) : 0.0);
2246+
}
22412247
if (a == 1) return rb_float_new(1.0);
22422248
return rb_float_new(pow((double)a, RFLOAT(y)->value));
22432249
default:

version.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#define RUBY_RELEASE_DATE "2008-06-08"
33
#define RUBY_VERSION_CODE 185
44
#define RUBY_RELEASE_CODE 20080608
5-
#define RUBY_PATCHLEVEL 139
5+
#define RUBY_PATCHLEVEL 140
66

77
#define RUBY_VERSION_MAJOR 1
88
#define RUBY_VERSION_MINOR 8

0 commit comments

Comments
 (0)