From: "mrkn (Kenta Murata)" Date: 2012-09-06T14:27:38+09:00 Subject: [ruby-core:47446] [ruby-trunk - Bug #6986] Inconsistent result of BigDecimal#power Issue #6986 has been updated by mrkn (Kenta Murata). I cannot reproduce NoMemoryError on my environment. However I think the following behaviors for the large parameters may be inconsistent, so I will attempt to fix these behavior. Unfortunately I may not be able to fix NoMemoryError because I don't have the environment of mswin32. Please submit your patch for fixing it. $ ruby-head -v ruby 2.0.0dev (2012-09-06 trunk 36915) [x86_64-darwin11.4.0] $ $ ruby-head -rbigdecimal -e 'p BigDecimal("1e-10").power(1e7)' # $ $ ruby-head -rbigdecimal -e 'p BigDecimal("1e-10").power(1e8)' # $ $ ruby-head -rbigdecimal -e 'p BigDecimal("1e-10").power(1e10)' -e:1:in `power': integer 10000000000 too big to convert to `int' (RangeError) from -e:1:in `
' $ $ ruby-head -rbigdecimal -e 'p BigDecimal("1e-10").power(1e19)' # ---------------------------------------- Bug #6986: Inconsistent result of BigDecimal#power https://bugs.ruby-lang.org/issues/6986#change-29204 Author: phasis68 (Heesob Park) Status: Assigned Priority: Normal Assignee: mrkn (Kenta Murata) Category: ext Target version: ruby -v: ruby 2.0.0dev (2012-09-05 trunk 36913) [i386-mswin32_100] I found BigDecimal#power returns incorrect result for a large value. C:\tmp>ruby -rbigdecimal -e "p BigDecimal('1e-10').power(1e7)" # C:\tmp>ruby -rbigdecimal -e "p BigDecimal('1e-10').power(1e8)" -e:1:in `power': failed to allocate memory (NoMemoryError) from -e:1:in `
' C:\tmp>ruby -rbigdecimal -e "p BigDecimal('1e-10').power(1e10)" # C:\tmp>ruby -rbigdecimal -e "p BigDecimal('1e-10').power(1e19)" # -- http://bugs.ruby-lang.org/