gallivm: Simplify/reorder minimax helper.

This commit is contained in:
José Fonseca
2012-04-03 09:10:53 +01:00
parent 431b458f24
commit d312b224b6
+15 -10
View File
@@ -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 <cmath>
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<boost::math::ntl::RR>() * 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;