[#47804] [ruby-trunk - Bug #9109][Open] extend したモジュールメソッドと RSpec の let で 2 つ同名を使ったときに segmentation fault になる — "sunaot (sunao tanabe)" <sunao.tanabe@...>

8 messages 2013/11/14

[ruby-dev:47826] [ruby-trunk - Bug #8401][Closed] BigDecimal.new("2").power(1e20) is zero.

From: "mrkn (Kenta Murata)" <muraken@...>
Date: 2013-11-29 06:19:42 UTC
List: ruby-dev #47826
Issue #8401 has been updated by mrkn (Kenta Murata).

Status changed from Open to Closed

It is corrected in 1.2.3.

$ ruby -ve 'gem "bigdecimal", "1.2.3"; require "bigdecimal"; puts BigDecimal(2).power(1e20)'
ruby 1.9.3p484 (2013-11-22) [x86_64-darwin12.5.0]
Infinity

$ ruby -ve 'gem "bigdecimal", "1.2.3"; require "bigdecimal"; puts BigDecimal(2).power(1e20)'
ruby 2.0.0p353 (2013-11-22) [x86_64-darwin12.5.0]
Infinity
----------------------------------------
Bug #8401: BigDecimal.new("2").power(1e20) is zero.
https://bugs.ruby-lang.org/issues/8401#change-43239

Author: akr (Akira Tanaka)
Status: Closed
Priority: Normal
Assignee: mrkn (Kenta Murata)
Category: ext
Target version: 
ruby -v: ruby 2.1.0dev (2013-05-13 trunk 40697) [x86_64-linux]
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


ふと見つけたのですが、BigDecimal.new("2").power(1e20) が 0.0 になります。

% ./ruby -v -rbigdecimal -e 'puts BigDecimal.new("2").power(1e20)'
ruby 2.1.0dev (2013-05-13 trunk 40697) [x86_64-linux]
0.0

以下のように、power の引数が
1e1 や 1e2 なら値が出てきて、
1e10 ならエラーになるのに、
1e20 になるとまたエラーじゃなくなって 0.0 になっちゃうのは
変ではないでしょうか。

% ./ruby -rbigdecimal -e 'puts BigDecimal.new("2").power(1e1)' 
0.1024E4
% ./ruby -rbigdecimal -e 'puts BigDecimal.new("2").power(1e2)'
0.1267650600228229401496703205376E31
% ./ruby -rbigdecimal -e 'puts BigDecimal.new("2").power(1e10)'
-e:1:in `power': integer 10000000000 too big to convert to `int' (RangeError)
	from -e:1:in `<main>'




-- 
http://bugs.ruby-lang.org/

In This Thread

Prev Next