Skip to content

Commit 24a9bf9

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_6@16919 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
1 parent b940547 commit 24a9bf9

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:04:38 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:58:19 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
@@ -2202,6 +2202,7 @@ static VALUE
22022202
fix_pow(x, y)
22032203
VALUE x, y;
22042204
{
2205+
static const double zero = 0.0;
22052206
long a = FIX2LONG(x);
22062207

22072208
if (FIXNUM_P(y)) {
@@ -2211,7 +2212,10 @@ fix_pow(x, y)
22112212
if (b == 0) return INT2FIX(1);
22122213
if (b == 1) return x;
22132214
a = FIX2LONG(x);
2214-
if (a == 0) return INT2FIX(0);
2215+
if (a == 0) {
2216+
if (b > 0) return INT2FIX(0);
2217+
return rb_float_new(1.0 / zero);
2218+
}
22152219
if (a == 1) return INT2FIX(1);
22162220
if (a == -1) {
22172221
if (b % 2 == 0)
@@ -2235,7 +2239,9 @@ fix_pow(x, y)
22352239
x = rb_int2big(FIX2LONG(x));
22362240
return rb_big_pow(x, y);
22372241
case T_FLOAT:
2238-
if (a == 0) return rb_float_new(0.0);
2242+
if (a == 0) {
2243+
return rb_float_new(RFLOAT(y)->value < 0 ? (1.0 / zero) : 0.0);
2244+
}
22392245
if (a == 1) return rb_float_new(1.0);
22402246
return rb_float_new(pow((double)a, RFLOAT(y)->value));
22412247
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 186
44
#define RUBY_RELEASE_CODE 20080608
5-
#define RUBY_PATCHLEVEL 138
5+
#define RUBY_PATCHLEVEL 139
66

77
#define RUBY_VERSION_MAJOR 1
88
#define RUBY_VERSION_MINOR 8

0 commit comments

Comments
 (0)