\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1.0\right) \cdot \log a\right) - b}}{y}\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\frac{1}{\sqrt[3]{e^{\left(\log a \cdot \left(t - 1.0\right) + \log z \cdot y\right) - b}} \cdot \sqrt[3]{e^{\left(\log a \cdot \left(t - 1.0\right) + \log z \cdot y\right) - b}}}} \cdot \frac{\left(\sqrt[3]{\sqrt[3]{\sqrt[3]{x}} \cdot \sqrt[3]{\sqrt[3]{x}}} \cdot \sqrt[3]{\sqrt[3]{\sqrt[3]{x}}}\right) \cdot \sqrt[3]{\sqrt[3]{x} \cdot \sqrt[3]{x}}}{\frac{y}{\sqrt[3]{e^{\left(\log a \cdot \left(t - 1.0\right) + \log z \cdot y\right) - b}}}}double f(double x, double y, double z, double t, double a, double b) {
double r23865981 = x;
double r23865982 = y;
double r23865983 = z;
double r23865984 = log(r23865983);
double r23865985 = r23865982 * r23865984;
double r23865986 = t;
double r23865987 = 1.0;
double r23865988 = r23865986 - r23865987;
double r23865989 = a;
double r23865990 = log(r23865989);
double r23865991 = r23865988 * r23865990;
double r23865992 = r23865985 + r23865991;
double r23865993 = b;
double r23865994 = r23865992 - r23865993;
double r23865995 = exp(r23865994);
double r23865996 = r23865981 * r23865995;
double r23865997 = r23865996 / r23865982;
return r23865997;
}
double f(double x, double y, double z, double t, double a, double b) {
double r23865998 = x;
double r23865999 = cbrt(r23865998);
double r23866000 = r23865999 * r23865999;
double r23866001 = 1.0;
double r23866002 = a;
double r23866003 = log(r23866002);
double r23866004 = t;
double r23866005 = 1.0;
double r23866006 = r23866004 - r23866005;
double r23866007 = r23866003 * r23866006;
double r23866008 = z;
double r23866009 = log(r23866008);
double r23866010 = y;
double r23866011 = r23866009 * r23866010;
double r23866012 = r23866007 + r23866011;
double r23866013 = b;
double r23866014 = r23866012 - r23866013;
double r23866015 = exp(r23866014);
double r23866016 = cbrt(r23866015);
double r23866017 = r23866016 * r23866016;
double r23866018 = r23866001 / r23866017;
double r23866019 = r23866000 / r23866018;
double r23866020 = cbrt(r23865999);
double r23866021 = r23866020 * r23866020;
double r23866022 = cbrt(r23866021);
double r23866023 = cbrt(r23866020);
double r23866024 = r23866022 * r23866023;
double r23866025 = cbrt(r23866000);
double r23866026 = r23866024 * r23866025;
double r23866027 = r23866010 / r23866016;
double r23866028 = r23866026 / r23866027;
double r23866029 = r23866019 * r23866028;
return r23866029;
}




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.9 |
|---|---|
| Target | 10.5 |
| Herbie | 1.4 |
Initial program 1.9
rmApplied associate-/l*2.0
rmApplied add-cube-cbrt2.0
Applied *-un-lft-identity2.0
Applied times-frac2.0
Applied add-cube-cbrt2.0
Applied times-frac1.4
rmApplied add-cube-cbrt1.4
Applied cbrt-prod1.4
rmApplied add-cube-cbrt1.4
Applied cbrt-prod1.4
Final simplification1.4
herbie shell --seed 2019158
(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) (* 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) (* y (log z))))))
(/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y))