\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\sqrt[3]{\frac{x \cdot {e}^{\left(\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b\right)}}{y}} \cdot \left(\sqrt[3]{\sqrt[3]{\frac{x \cdot e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}}{y}} \cdot \left(\sqrt[3]{\frac{x \cdot e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}}{y}} \cdot \sqrt[3]{\frac{x \cdot e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}}{y}}\right)} \cdot \left(\sqrt[3]{\sqrt[3]{\frac{x \cdot e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}}{y}}} \cdot \left(\sqrt[3]{\sqrt[3]{\frac{x \cdot e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}}{y}}} \cdot \sqrt[3]{\sqrt[3]{\frac{x \cdot e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}}{y}}}\right)\right)\right)double f(double x, double y, double z, double t, double a, double b) {
double r18302025 = x;
double r18302026 = y;
double r18302027 = z;
double r18302028 = log(r18302027);
double r18302029 = r18302026 * r18302028;
double r18302030 = t;
double r18302031 = 1.0;
double r18302032 = r18302030 - r18302031;
double r18302033 = a;
double r18302034 = log(r18302033);
double r18302035 = r18302032 * r18302034;
double r18302036 = r18302029 + r18302035;
double r18302037 = b;
double r18302038 = r18302036 - r18302037;
double r18302039 = exp(r18302038);
double r18302040 = r18302025 * r18302039;
double r18302041 = r18302040 / r18302026;
return r18302041;
}
double f(double x, double y, double z, double t, double a, double b) {
double r18302042 = x;
double r18302043 = exp(1.0);
double r18302044 = a;
double r18302045 = log(r18302044);
double r18302046 = t;
double r18302047 = 1.0;
double r18302048 = r18302046 - r18302047;
double r18302049 = r18302045 * r18302048;
double r18302050 = z;
double r18302051 = log(r18302050);
double r18302052 = y;
double r18302053 = r18302051 * r18302052;
double r18302054 = r18302049 + r18302053;
double r18302055 = b;
double r18302056 = r18302054 - r18302055;
double r18302057 = pow(r18302043, r18302056);
double r18302058 = r18302042 * r18302057;
double r18302059 = r18302058 / r18302052;
double r18302060 = cbrt(r18302059);
double r18302061 = exp(r18302056);
double r18302062 = r18302042 * r18302061;
double r18302063 = r18302062 / r18302052;
double r18302064 = cbrt(r18302063);
double r18302065 = r18302064 * r18302064;
double r18302066 = r18302064 * r18302065;
double r18302067 = cbrt(r18302066);
double r18302068 = cbrt(r18302064);
double r18302069 = r18302068 * r18302068;
double r18302070 = r18302068 * r18302069;
double r18302071 = r18302067 * r18302070;
double r18302072 = r18302060 * r18302071;
return r18302072;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 1.7 |
|---|---|
| Target | 11.3 |
| Herbie | 1.7 |
Initial program 1.7
rmApplied add-cube-cbrt1.7
rmApplied *-un-lft-identity1.7
Applied exp-prod1.7
Simplified1.7
rmApplied add-cube-cbrt1.7
rmApplied add-cbrt-cube1.7
Final simplification1.7
herbie shell --seed 2019172 +o rules:numerics
(FPCore (x y z t a b)
:name "Numeric.SpecFunctions:incompleteBetaWorker from math-functions-0.1.5.2, A"
:herbie-target
(if (< t -0.8845848504127471) (/ (* x (/ (pow a (- t 1.0)) y)) (- (+ b 1.0) (* y (log z)))) (if (< t 852031.2288374073) (/ (* (/ x y) (pow a (- t 1.0))) (exp (- b (* (log z) y)))) (/ (* x (/ (pow a (- t 1.0)) y)) (- (+ b 1.0) (* y (log z))))))
(/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y))