Andrew Geery <andrew.ge...@gmail.com> wrote: > The HYPOT macro executed 100 million times in 11 seconds and the > phypot function executed the same number of times in 22 seconds. Or, to put that another way, the new function adds 110 nanoseconds to each hypotenuse calculation. > With both -O2 and -O3, the HYPOT macro executed in 8 seconds and > the phypot in 18. Or, with these optimizations, it adds 100 nanoseconds to each hypotenuse calculation. I don't know about others, but that seems a reasonable price to pay to eliminate all possible underflows, all overflows except where the result doesn't fit in the result data type, and make NaN and Inf processing more standard compliant. > I found that the difference in the two calculations were always > less than 0.000001. However, about a third of the calculations > differed at one more magnitude of precision (that is, there were > differences in the calculations that were greater than 0.0000001). That's harder for me to evaluate in terms of whether it's acceptable. It *is* an *approximate* data type, and the differences are all less than 0.0001%; however, that seems like a pretty weak guarantee if it's making the answer less accurate. If we could take some of these cases with relatively large differences and see which of the calculations is more accurate, that might help make a decision. I'm not sure which technique would tend to be more accurate. Since they're algebraically equivalent, and what we're using now pushes toward underflow and overflow more readily, it seems possible that the differences will generally reflect a greater accuracy in the patch's technique. -Kevin
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers