mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 06:48:06 +02:00
gallivm: Simplify/reorder minimax helper.
This commit is contained in:
parent
431b458f24
commit
d312b224b6
1 changed files with 15 additions and 10 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue