On Mon, 26 Sep 2011 16:19:55 -0700, Paul Berry <stereotype...@gmail.com> wrote: > The formula we were previously using for asinh: > > asinh x = ln(x + sqrt(x * x + 1)) > > is numerically unstable: when x is a large negative value, the quantity > > x + sqrt(x * x + 1) > > is a small positive value (on the order of 1/(2|x|)). Since the > logarithm function is very sensitive in this range, any error in the > computation of the square root manifests as a large error in the > result. > > This patch changes the formula to: > > asinh x = sign(x) * ln(abs(x) + sqrt(x * x + 1)) > > which is only slightly more expensive to compute, and is numerically > stable for all x.
Reviewed-by: Eric Anholt <e...@anholt.net>
pgpofoKYcQhn1.pgp
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev