\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\frac{1}{\frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{\sqrt[3]{e^{\mathsf{fma}\left(\log a, t - 1, \log z \cdot y - b\right)}} \cdot \sqrt[3]{e^{\mathsf{fma}\left(\log a, t - 1, \log z \cdot y - b\right)}}}} \cdot \frac{x}{\frac{\sqrt[3]{\sqrt[3]{y}} \cdot \left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}\right)}{\sqrt[3]{e^{\mathsf{fma}\left(\log a, t - 1, \log z \cdot y - b\right)}}}}double f(double x, double y, double z, double t, double a, double b) {
double r18967839 = x;
double r18967840 = y;
double r18967841 = z;
double r18967842 = log(r18967841);
double r18967843 = r18967840 * r18967842;
double r18967844 = t;
double r18967845 = 1.0;
double r18967846 = r18967844 - r18967845;
double r18967847 = a;
double r18967848 = log(r18967847);
double r18967849 = r18967846 * r18967848;
double r18967850 = r18967843 + r18967849;
double r18967851 = b;
double r18967852 = r18967850 - r18967851;
double r18967853 = exp(r18967852);
double r18967854 = r18967839 * r18967853;
double r18967855 = r18967854 / r18967840;
return r18967855;
}
double f(double x, double y, double z, double t, double a, double b) {
double r18967856 = 1.0;
double r18967857 = y;
double r18967858 = cbrt(r18967857);
double r18967859 = r18967858 * r18967858;
double r18967860 = a;
double r18967861 = log(r18967860);
double r18967862 = t;
double r18967863 = 1.0;
double r18967864 = r18967862 - r18967863;
double r18967865 = z;
double r18967866 = log(r18967865);
double r18967867 = r18967866 * r18967857;
double r18967868 = b;
double r18967869 = r18967867 - r18967868;
double r18967870 = fma(r18967861, r18967864, r18967869);
double r18967871 = exp(r18967870);
double r18967872 = cbrt(r18967871);
double r18967873 = r18967872 * r18967872;
double r18967874 = r18967859 / r18967873;
double r18967875 = r18967856 / r18967874;
double r18967876 = x;
double r18967877 = cbrt(r18967858);
double r18967878 = r18967877 * r18967877;
double r18967879 = r18967877 * r18967878;
double r18967880 = r18967879 / r18967872;
double r18967881 = r18967876 / r18967880;
double r18967882 = r18967875 * r18967881;
return r18967882;
}




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