\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\frac{\frac{x}{\frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{\sqrt{e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}}}}}{\frac{\sqrt[3]{\sqrt[3]{y}} \cdot \left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}\right)}{\sqrt{{e}^{\left(\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b\right)}}}}double f(double x, double y, double z, double t, double a, double b) {
double r18573781 = x;
double r18573782 = y;
double r18573783 = z;
double r18573784 = log(r18573783);
double r18573785 = r18573782 * r18573784;
double r18573786 = t;
double r18573787 = 1.0;
double r18573788 = r18573786 - r18573787;
double r18573789 = a;
double r18573790 = log(r18573789);
double r18573791 = r18573788 * r18573790;
double r18573792 = r18573785 + r18573791;
double r18573793 = b;
double r18573794 = r18573792 - r18573793;
double r18573795 = exp(r18573794);
double r18573796 = r18573781 * r18573795;
double r18573797 = r18573796 / r18573782;
return r18573797;
}
double f(double x, double y, double z, double t, double a, double b) {
double r18573798 = x;
double r18573799 = y;
double r18573800 = cbrt(r18573799);
double r18573801 = r18573800 * r18573800;
double r18573802 = a;
double r18573803 = log(r18573802);
double r18573804 = t;
double r18573805 = 1.0;
double r18573806 = r18573804 - r18573805;
double r18573807 = r18573803 * r18573806;
double r18573808 = z;
double r18573809 = log(r18573808);
double r18573810 = r18573809 * r18573799;
double r18573811 = r18573807 + r18573810;
double r18573812 = b;
double r18573813 = r18573811 - r18573812;
double r18573814 = exp(r18573813);
double r18573815 = sqrt(r18573814);
double r18573816 = r18573801 / r18573815;
double r18573817 = r18573798 / r18573816;
double r18573818 = cbrt(r18573800);
double r18573819 = r18573818 * r18573818;
double r18573820 = r18573818 * r18573819;
double r18573821 = exp(1.0);
double r18573822 = pow(r18573821, r18573813);
double r18573823 = sqrt(r18573822);
double r18573824 = r18573820 / r18573823;
double r18573825 = r18573817 / r18573824;
return r18573825;
}




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.9 |
| Herbie | 1.0 |
Initial program 1.9
rmApplied associate-/l*2.0
rmApplied add-sqr-sqrt2.0
Applied add-cube-cbrt2.0
Applied times-frac2.0
Applied associate-/r*1.0
rmApplied *-un-lft-identity1.0
Applied exp-prod1.0
Simplified1.0
rmApplied add-cube-cbrt1.0
Final simplification1.0
herbie shell --seed 2019169
(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))