https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64677

Mikhail Maltsev <maltsevm at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |maltsevm at gmail dot com

--- Comment #3 from Mikhail Maltsev <maltsevm at gmail dot com> ---
Probably calculating with higher precision will give correct result. Output of
Wolfram Alpha:

-O0:
convert -0.0083223357032193145 to binary
-1.00010000101101001100111111010101111110001111010101101111110000100111001001000000101110010001111111000010000110010110110001111..._2×2^-7
| hexadecimal value
IEEE double-precision number | 578f5ffd4c0b81bf 
(assuming little-endian byte ordering)

-O1:
convert -0.0083223357032193128 to binary
-1.00010000101101001100111111010101111110001111010101100000000101000110111101001110010111111111111111010110100111010111010010011..._2×2^-7
| hexadecimal value
IEEE double-precision number | 568f5ffd4c0b81bf 
(assuming little-endian byte ordering)

Wolfram Alpha's calculation:
binary(re(1/(-61.887073591767951 -60.052083270252012i)))
-1.0001000010110100110011111101010111111000111101010110000111101100101010111110001101011011011011010000000101100000101111101111..._2×2^-7
| hexadecimal value
IEEE double-precision number | 568f5ffd4c0b81bf 
(assuming little-endian byte ordering)

So, compile-time result is more precise. BTW, what does the disassembly look
like?

Reply via email to