\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\frac{\sqrt[3]{e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}} \cdot \sqrt[3]{e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \frac{x}{\frac{\left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}\right) \cdot \sqrt[3]{\sqrt[3]{y}}}{\sqrt[3]{e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}}}double f(double x, double y, double z, double t, double a, double b) {
double r31653192 = x;
double r31653193 = y;
double r31653194 = z;
double r31653195 = log(r31653194);
double r31653196 = r31653193 * r31653195;
double r31653197 = t;
double r31653198 = 1.0;
double r31653199 = r31653197 - r31653198;
double r31653200 = a;
double r31653201 = log(r31653200);
double r31653202 = r31653199 * r31653201;
double r31653203 = r31653196 + r31653202;
double r31653204 = b;
double r31653205 = r31653203 - r31653204;
double r31653206 = exp(r31653205);
double r31653207 = r31653192 * r31653206;
double r31653208 = r31653207 / r31653193;
return r31653208;
}
double f(double x, double y, double z, double t, double a, double b) {
double r31653209 = y;
double r31653210 = z;
double r31653211 = log(r31653210);
double r31653212 = r31653209 * r31653211;
double r31653213 = t;
double r31653214 = 1.0;
double r31653215 = r31653213 - r31653214;
double r31653216 = a;
double r31653217 = log(r31653216);
double r31653218 = r31653215 * r31653217;
double r31653219 = r31653212 + r31653218;
double r31653220 = b;
double r31653221 = r31653219 - r31653220;
double r31653222 = exp(r31653221);
double r31653223 = cbrt(r31653222);
double r31653224 = r31653223 * r31653223;
double r31653225 = cbrt(r31653209);
double r31653226 = r31653225 * r31653225;
double r31653227 = r31653224 / r31653226;
double r31653228 = x;
double r31653229 = cbrt(r31653225);
double r31653230 = r31653229 * r31653229;
double r31653231 = r31653230 * r31653229;
double r31653232 = r31653231 / r31653223;
double r31653233 = r31653228 / r31653232;
double r31653234 = r31653227 * r31653233;
return r31653234;
}




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 | 2.0 |
|---|---|
| Target | 10.8 |
| Herbie | 1.1 |
Initial program 2.0
rmApplied associate-/l*1.9
rmApplied add-cube-cbrt1.9
Applied add-cube-cbrt1.9
Applied times-frac1.9
Applied *-un-lft-identity1.9
Applied times-frac1.1
Simplified1.1
rmApplied add-cube-cbrt1.1
Final simplification1.1
herbie shell --seed 2019174
(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))