\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 r25794990 = x;
double r25794991 = y;
double r25794992 = z;
double r25794993 = log(r25794992);
double r25794994 = r25794991 * r25794993;
double r25794995 = t;
double r25794996 = 1.0;
double r25794997 = r25794995 - r25794996;
double r25794998 = a;
double r25794999 = log(r25794998);
double r25795000 = r25794997 * r25794999;
double r25795001 = r25794994 + r25795000;
double r25795002 = b;
double r25795003 = r25795001 - r25795002;
double r25795004 = exp(r25795003);
double r25795005 = r25794990 * r25795004;
double r25795006 = r25795005 / r25794991;
return r25795006;
}
double f(double x, double y, double z, double t, double a, double b) {
double r25795007 = x;
double r25795008 = exp(1.0);
double r25795009 = a;
double r25795010 = log(r25795009);
double r25795011 = t;
double r25795012 = 1.0;
double r25795013 = r25795011 - r25795012;
double r25795014 = r25795010 * r25795013;
double r25795015 = z;
double r25795016 = log(r25795015);
double r25795017 = y;
double r25795018 = r25795016 * r25795017;
double r25795019 = r25795014 + r25795018;
double r25795020 = b;
double r25795021 = r25795019 - r25795020;
double r25795022 = pow(r25795008, r25795021);
double r25795023 = r25795007 * r25795022;
double r25795024 = r25795023 / r25795017;
double r25795025 = cbrt(r25795024);
double r25795026 = exp(r25795021);
double r25795027 = r25795007 * r25795026;
double r25795028 = r25795027 / r25795017;
double r25795029 = cbrt(r25795028);
double r25795030 = r25795029 * r25795029;
double r25795031 = r25795029 * r25795030;
double r25795032 = cbrt(r25795031);
double r25795033 = cbrt(r25795029);
double r25795034 = r25795033 * r25795033;
double r25795035 = r25795033 * r25795034;
double r25795036 = r25795032 * r25795035;
double r25795037 = r25795025 * r25795036;
return r25795037;
}




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
(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))