From 49dc86649202a87c71442a6e127ea04b87300b4c Mon Sep 17 00:00:00 2001 From: kazu Date: Wed, 6 Dec 2017 15:02:31 +0000 Subject: [PATCH] `Integer#pow(b)` accepts numeric instead of integer only and returns numeric instead of integer only same as `Integer#**` git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61058 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- bignum.c | 2 +- test/ruby/test_numeric.rb | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/bignum.c b/bignum.c index 94d0d50c8f..291ed96f01 100644 --- a/bignum.c +++ b/bignum.c @@ -7028,7 +7028,7 @@ int_pow_tmp2(VALUE x, VALUE y, long mm, int nega_flg) /* * Document-method: Integer#pow * call-seq: - * integer.pow(integer) -> integer + * integer.pow(numeric) -> numeric * integer.pow(integer, integer) -> integer * * Returns (modular) exponentiation as: diff --git a/test/ruby/test_numeric.rb b/test/ruby/test_numeric.rb index 9b17fbb2a5..02a6b8f4a8 100644 --- a/test/ruby/test_numeric.rb +++ b/test/ruby/test_numeric.rb @@ -386,6 +386,10 @@ class TestNumeric < Test::Unit::TestCase end def test_pow + assert_equal(2**3, 2.pow(3)) + assert_equal(2**-1, 2.pow(-1)) + assert_equal(2**0.5, 2.pow(0.5)) + assert_equal((-1)**0.5, -1.pow(0.5)) assert_equal(3**3 % 8, 3.pow(3, 8)) assert_equal(3**3 % -8, 3.pow(3,-8)) assert_equal(3**2 % -2, 3.pow(2,-2))