From: cremno@... Date: 2014-05-04T02:14:25+00:00 Subject: [ruby-core:62338] [ruby-trunk - Feature #9799] change behavior of Math::atan2 if y and x are both Float::INFINITY Issue #9799 has been updated by cremno phobia. I've searched for a rationale. It can be found in on the bottom of page 188 (or real page 181): >The specification of `atan2(���,���)` as `��/4` indicates the reasonable quadrant, preserving some information in preference to none. Maybe it does make more sense **for Ruby** to raise. I'm not a mathematician and it also doesn't look useful to me. Also, some languages I've linked seem to lack a similar exception/error (Go or JS), but instead of returning NaN, they follow C's Ann. F and return a more meaningful result instead. It is mainly curiosity (I've added `Math::DomainError` to mruby)���I don't have a strong opinion on this. ---------------------------------------- Feature #9799: change behavior of Math::atan2 if y and x are both Float::INFINITY https://bugs.ruby-lang.org/issues/9799#change-46494 * Author: cremno phobia * Status: Closed * Priority: Normal * Assignee: * Category: core * Target version: ---------------------------------------- The current behavior when y and x are either negative or positive infinity is: ~~~ruby Math.atan2(Float::INFINITY, Float::INFINITY) # raises Math::DomainError ~~~ The attached diff changes it to: ~~~ruby Math.atan2(Float::INFINITY, Float::INFINITY) # => 0.7853981633974483 ~~~ I think a domain error isn't desirable here. Is it even one? Other languages like Go, Python, Java or Javascript seem to return the expected result. .NET languages return NaN. ISO C99/C11 also does, if the implementation follows the normative Annex F. This isn't always the case, but there is already a special case when y and x are zero, so I think this one is acceptable, too. http://golang.org/src/pkg/math/atan2.go http://hg.python.org/cpython/file/62438d1b11c7/Modules/mathmodule.c#l516 http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#atan2%28double,%20double%29 http://www.ecma-international.org/ecma-262/5.1/#sec-15.8.2.5 http://port70.net/~nsz/c/c99/n1256.html#F.9.1.4 http://msdn.microsoft.com/en-us/library/system.math.atan2.aspx ---Files-------------------------------- f36b9cd63c8218d17a4ddf346a88b9d64a62f557.diff (1.58 KB) -- https://bugs.ruby-lang.org/