|
Message-ID: <c2e8be32-74cf-082-5433-b37ae76fdd12@esi.com.au> Date: Fri, 16 Aug 2024 11:47:03 +1000 (AEST) From: Damian McGuckin <damianm@....com.au> To: musl@...ts.openwall.com cc: Morten Welinder <mwelinder@...il.com> Subject: Re: catan(z) On Thu, 15 Aug 2024, Rich Felker wrote: > On Thu, Aug 15, 2024 at 09:18:19AM -0400, Morten Welinder wrote: >> atan2 definitely isn't supposed to always output rational numbers on >> rational input. >> >> atan2(+0,-1) is Pi. >> atan2(-0,-1) is -Pi >> atan2(1,1) is Pi/4 -- clearly not a rational number. >> >> These aren't exactly rational results (unless you mean their >> floating-point approximations). > > The way I read it, the claim was not that the exact mathematical value > of atan2 for some argument is rational, but that the floating point > number returned by the C function is necessarily rational (because all > floating point numbers are diadic rationals) and thus never actually > equal to ?pi. This means you don't have any issue with whatever > happens exactly at the endpoints. Precisely. Sorry if I was unclear Morten. Actually, I think we need to ensure we use a value of Pi above which is rounded towards zero (rather than one rounded to nearest tied to even) so that it never lies outside the exact range of [-PI,+PI] where PI in this case is an irrational number that we cannot represent with an IEEE 754 floating point number. If we can enhance catan(z) to explicitly handle the special cases of Annex G of the C standard, some of this discussion becomes a lot simpler. But at the time he wrote this routine, Moshier did not have the luxury of a standard to consult. - Damian
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.