Issue #17318 has been updated by mame (Yusuke Endoh).


deXterbed (Manoj Mishra) wrote in #note-3:
> ```
> def raise(a, b)
>   return -((a.abs)**b) if a < 0
>   a**b
> end
> ```

I don't think that this should be the default behavior because `raise(-1, 2)` returns `-1` but I expect the square of `-1` to be `1`. 

----------------------------------------
Bug #17318: Raising float to the power of other issue
https://bugs.ruby-lang.org/issues/17318#change-88478

* Author: deXterbed (Manoj Mishra)
* Status: Rejected
* Priority: Normal
* ruby -v: 2.6.3
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN
----------------------------------------
Raising a negative float to another float results in a complex number. Interestingly, doing the same thing without using variables works fine!

Sample Snippet:

$ irb
2.6.3 :001 > x=-0.4790529833050308
 => -0.4790529833050308
2.6.3 :002 > y=0.9918032786885246
 => 0.9918032786885246
2.6.3 :003 > x**y
 => (-0.48179173935576963+0.012409246172848264i)
2.6.3 :004 > -0.4790529833050308**0.9918032786885246
 => -0.4819515219418196



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

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>