\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1.0\right) \cdot \log a\right) - b}}{y}\frac{\sqrt[3]{e^{\left(\log a \cdot \left(t - 1.0\right) + \log z \cdot y\right) - b}}}{\sqrt[3]{y}} \cdot \left(\frac{x \cdot \left(\sqrt[3]{e^{\left(\log a \cdot \left(t - 1.0\right) + \log z \cdot y\right) - b}} \cdot \sqrt[3]{\sqrt{e^{\left(\log a \cdot \left(t - 1.0\right) + \log z \cdot y\right) - b}}}\right)}{\left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}\right) \cdot \left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}\right)} \cdot \frac{\sqrt[3]{\sqrt{e^{\left(\log a \cdot \left(t - 1.0\right) + \log z \cdot y\right) - b}}}}{\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}}\right)double f(double x, double y, double z, double t, double a, double b) {
double r14855827 = x;
double r14855828 = y;
double r14855829 = z;
double r14855830 = log(r14855829);
double r14855831 = r14855828 * r14855830;
double r14855832 = t;
double r14855833 = 1.0;
double r14855834 = r14855832 - r14855833;
double r14855835 = a;
double r14855836 = log(r14855835);
double r14855837 = r14855834 * r14855836;
double r14855838 = r14855831 + r14855837;
double r14855839 = b;
double r14855840 = r14855838 - r14855839;
double r14855841 = exp(r14855840);
double r14855842 = r14855827 * r14855841;
double r14855843 = r14855842 / r14855828;
return r14855843;
}
double f(double x, double y, double z, double t, double a, double b) {
double r14855844 = a;
double r14855845 = log(r14855844);
double r14855846 = t;
double r14855847 = 1.0;
double r14855848 = r14855846 - r14855847;
double r14855849 = r14855845 * r14855848;
double r14855850 = z;
double r14855851 = log(r14855850);
double r14855852 = y;
double r14855853 = r14855851 * r14855852;
double r14855854 = r14855849 + r14855853;
double r14855855 = b;
double r14855856 = r14855854 - r14855855;
double r14855857 = exp(r14855856);
double r14855858 = cbrt(r14855857);
double r14855859 = cbrt(r14855852);
double r14855860 = r14855858 / r14855859;
double r14855861 = x;
double r14855862 = sqrt(r14855857);
double r14855863 = cbrt(r14855862);
double r14855864 = r14855858 * r14855863;
double r14855865 = r14855861 * r14855864;
double r14855866 = cbrt(r14855859);
double r14855867 = r14855866 * r14855866;
double r14855868 = r14855867 * r14855867;
double r14855869 = r14855865 / r14855868;
double r14855870 = r14855863 / r14855867;
double r14855871 = r14855869 * r14855870;
double r14855872 = r14855860 * r14855871;
return r14855872;
}




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.3 |
Initial program 1.9
rmApplied add-cube-cbrt1.9
Applied add-cube-cbrt1.9
Applied associate-*r*1.9
Applied times-frac1.5
rmApplied add-cube-cbrt1.5
Applied add-cube-cbrt1.5
Applied swap-sqr1.5
Applied add-sqr-sqrt1.5
Applied cbrt-prod1.5
Applied associate-*r*1.5
Applied associate-*r*1.5
Applied times-frac1.3
Final simplification1.3
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))