Actions
Bug #15491
closedr62701 introduced the incompatibility of Complex#+, #-, and #* removing #ifndef PRESERVE_SIGNEDZERO
ruby -v:
ruby 2.6.0p0 (2018-12-25 revision 66547) [x86_64-linux]
Description
In r62701, preprocessor conditions #ifndef PRESERVE_SIGNEDZERO
in f_add
, f_mul
, and f_sub
functions were removed.
These changes introduced the incompatibility for some special cases.
For example, the results of the following code shows the different sign of the imaginary part:
p Complex(-0.0, 0) * Complex(0, 0)
#=> (-0.0+0.0i) on 2.5.3
#=> (-0.0-0.0i) on 2.6.0
Moreover, the following code shows the different values in the real part:
class Integer
def +(*); 42; end
end
p Complex(1, 2) + Complex(0, 1)
#=> (42+42i) on 2.5.3
#=> (0+42i) on 2.6.0
Actions
Like0
Like0Like0Like0Like0