Issue #13986 has been updated by nobu (Nobuyoshi Nakada).

Description updated
Status changed from Open to Feedback

5.5 (5 5) wrote:
> 期待は,それぞれ
> 
> ```ruby
> Complex(1.0, 0.0)
> Complex(0.0, -1.0)
> ```
> 
> でした。

2.4の結果がおかしいのは確かですが、その期待は本当に正しいんでしょうか。

ドキュメント上は以下のように単にfloatを返すことになっています。
>     int.fdiv(numeric)  ->  float
>
>  Returns the floating point result of dividing `int` by `numeric`.
>
>     654321.fdiv(13731)      #=> 47.652829364212366
>     654321.fdiv(13731.24)   #=> 47.65199646936475
>     -654321.fdiv(13731)     #=> -47.652829364212366

trunkでは`Complex(1.0, 0.0).to_f`と同様例外になります。

----------------------------------------
Bug #13986: Integer#fdiv with Complex returns unexpected value
https://bugs.ruby-lang.org/issues/13986#change-67114

* Author: 5.5 (5 5)
* Status: Feedback
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-darwin15]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
Ruby 2.4 では,`Integer#fdiv` に `Complex` オブジェクトを与えると,期待と違う値が得られる場合があります。

```ruby
p 1.fdiv(1+0i) #=> -1.404447761611185e+306
p 1.fdiv(1i) #=> -1.0e-323
```

期待は,それぞれ

```ruby
Complex(1.0, 0.0)
Complex(0.0, -1.0)
```

でした。

Ruby 2.3.3 では期待のとおりでした。



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