\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^{\mathsf{fma}\left(t - 1.0, \log a, \log z \cdot y\right) - b}} \cdot \sqrt[3]{e^{\mathsf{fma}\left(t - 1.0, \log a, \log z \cdot y\right) - b}}}} \cdot \frac{\sqrt[3]{\sqrt[3]{x} \cdot \sqrt[3]{x}} \cdot \left(\sqrt[3]{\sqrt[3]{\sqrt[3]{x}} \cdot \sqrt[3]{\sqrt[3]{x}}} \cdot \sqrt[3]{\sqrt[3]{\sqrt[3]{x}}}\right)}{\frac{y}{\sqrt[3]{e^{\mathsf{fma}\left(t - 1.0, \log a, \log z \cdot y\right) - b}}}}double f(double x, double y, double z, double t, double a, double b) {
double r17314866 = x;
double r17314867 = y;
double r17314868 = z;
double r17314869 = log(r17314868);
double r17314870 = r17314867 * r17314869;
double r17314871 = t;
double r17314872 = 1.0;
double r17314873 = r17314871 - r17314872;
double r17314874 = a;
double r17314875 = log(r17314874);
double r17314876 = r17314873 * r17314875;
double r17314877 = r17314870 + r17314876;
double r17314878 = b;
double r17314879 = r17314877 - r17314878;
double r17314880 = exp(r17314879);
double r17314881 = r17314866 * r17314880;
double r17314882 = r17314881 / r17314867;
return r17314882;
}
double f(double x, double y, double z, double t, double a, double b) {
double r17314883 = x;
double r17314884 = cbrt(r17314883);
double r17314885 = r17314884 * r17314884;
double r17314886 = 1.0;
double r17314887 = t;
double r17314888 = 1.0;
double r17314889 = r17314887 - r17314888;
double r17314890 = a;
double r17314891 = log(r17314890);
double r17314892 = z;
double r17314893 = log(r17314892);
double r17314894 = y;
double r17314895 = r17314893 * r17314894;
double r17314896 = fma(r17314889, r17314891, r17314895);
double r17314897 = b;
double r17314898 = r17314896 - r17314897;
double r17314899 = exp(r17314898);
double r17314900 = cbrt(r17314899);
double r17314901 = r17314900 * r17314900;
double r17314902 = r17314886 / r17314901;
double r17314903 = r17314885 / r17314902;
double r17314904 = cbrt(r17314885);
double r17314905 = cbrt(r17314884);
double r17314906 = r17314905 * r17314905;
double r17314907 = cbrt(r17314906);
double r17314908 = cbrt(r17314905);
double r17314909 = r17314907 * r17314908;
double r17314910 = r17314904 * r17314909;
double r17314911 = r17314894 / r17314900;
double r17314912 = r17314910 / r17314911;
double r17314913 = r17314903 * r17314912;
return r17314913;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
| Original | 1.9 |
|---|---|
| Target | 10.5 |
| Herbie | 1.4 |
Initial program 1.9
rmApplied associate-/l*2.0
Simplified2.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 +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) (* 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))