Project

General

Profile

Bug #17257

Updated by sawa (Tsuyoshi Sawada) over 3 years ago

Ruby 2.5.8, 2.6.6, 2.7.1 


 ```ruby 
 p -1.pow(0, 1) #=> 1 
 p    0.pow(0, 1) #=> 1 
 p    1.pow(0, 1) #=> 1 
 p 1234567890.pow(0, 1) #=> 1 
 ``` 

 These return values should value shoud be 0. 


 Patch for test: 

 Let's add some boundary value tests to `test_pow` of [test_numeric.rb](https://github.com/ruby/ruby/blob/e014e6bf6685f681998238ff005f6d161d43ce51/test/ruby/test_numeric.rb). 

 ```ruby 
 integers = [-2, -1, 0, 1, 2, 3, 6, 1234567890123456789] 
 integers.each do |i| 
   assert_equal(0, i.pow(0, 1), '[Bug #17257]') 
   assert_equal(1, i.pow(0, 2)) 
   assert_equal(1, i.pow(0, 3)) 
   assert_equal(1, i.pow(0, 6)) 
   assert_equal(1, i.pow(0, 1234567890123456789)) 
  
   assert_equal(0,    i.pow(0, -1)) 
   assert_equal(-1, i.pow(0, -2)) 
   assert_equal(-2, i.pow(0, -3)) 
   assert_equal(-5, i.pow(0, -6)) 
   assert_equal(-1234567890123456788, i.pow(0, -1234567890123456789)) 
 end 

 assert_equal(0,    0.pow(2, 1)) 
 assert_equal(0,    0.pow(3, 1)) 
 assert_equal(0,    2.pow(3, 1)) 
 assert_equal(0, -2.pow(3, 1))

Back