From: José Fonseca Date: Tue, 3 Apr 2012 08:10:53 +0000 (+0100) Subject: gallivm: Simplify/reorder minimax helper. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d312b224b6759fd9b206d4c19450f6a4dfe53311;p=mesa.git gallivm: Simplify/reorder minimax helper. --- diff --git a/src/gallium/auxiliary/gallivm/f.cpp b/src/gallium/auxiliary/gallivm/f.cpp index 6b9c35b3ce5..7cb50f16c0f 100644 --- a/src/gallium/auxiliary/gallivm/f.cpp +++ b/src/gallium/auxiliary/gallivm/f.cpp @@ -31,20 +31,20 @@ * * ./minimax * - * - For example, to compute log2 5th order polynomial between [1, 2] do: + * - For example, to compute exp2 5th order polynomial between [0, 1] do: * * variant 0 - * range 1 2 + * range 0 1 * order 5 0 * step 200 * info * * and take the coefficients from the P = { ... } array. * - * - To compute exp2 5th order polynomial between [0, 1] do: + * - To compute log2 5th order polynomial between [1, 2] do: * * variant 1 - * range 0 1 + * range 1 2 * order 5 0 * step 200 * info @@ -59,20 +59,25 @@ #include +boost::math::ntl::RR exp2(const boost::math::ntl::RR& x) +{ + return exp(x*log(2.0)); +} + +boost::math::ntl::RR log2(const boost::math::ntl::RR& x) +{ + return log(x)/log(2.0); +} boost::math::ntl::RR f(const boost::math::ntl::RR& x, int variant) { - static const boost::math::ntl::RR tiny = boost::math::tools::min_value() * 64; - switch(variant) { case 0: - // log2(x)/(x - 1) - return log(x)/log(2.0)/(x - 1.0); + return exp2(x); case 1: - // exp2(x) - return exp(x*log(2.0)); + return log2(x)/(x - 1.0); } return 0;