BUG #4653: zero with negative sign returned on round(sin) function
The following bug has been logged online:
Bug reference: 4653
Logged by: Marco Vieira
Email address: maovieira@gmail.com
PostgreSQL version: 8.3.5
Operating system: x86_64-pc-linux-gnu (ubuntu 4.3.2-1ubuntu11 )
Description: zero with negative sign returned on round(sin) function
Details:
If I query select round(sin(2.0*pi()*0.51)) I get "-0" as return but zero is
unsigned.
but: select sin(2.0*pi()*0.51)
returns: -0.0627905195293133
and select round(-0.0627905195293133)
returns: 0 (no sign)
I used cast to work around it: select round(sin(2.0*pi()*0.51))::int
"Marco Vieira" <maovieira@gmail.com> writes:
If I query select round(sin(2.0*pi()*0.51)) I get "-0" as return but zero is
unsigned.
In IEEE-standard float arithmetic, that isn't true --- zero and minus
zero are distinguishable values. This is not a bug but just the way
your platform chooses to define the result of rounding a small
negative value.
(Or at least, if you are convinced it's a bug, take it up with the
glibc authors not us.)
regards, tom lane