\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\frac{x \cdot e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}}{y}double f(double x, double y, double z, double t, double a, double b) {
double r357727 = x;
double r357728 = y;
double r357729 = z;
double r357730 = log(r357729);
double r357731 = r357728 * r357730;
double r357732 = t;
double r357733 = 1.0;
double r357734 = r357732 - r357733;
double r357735 = a;
double r357736 = log(r357735);
double r357737 = r357734 * r357736;
double r357738 = r357731 + r357737;
double r357739 = b;
double r357740 = r357738 - r357739;
double r357741 = exp(r357740);
double r357742 = r357727 * r357741;
double r357743 = r357742 / r357728;
return r357743;
}
double f(double x, double y, double z, double t, double a, double b) {
double r357744 = x;
double r357745 = a;
double r357746 = log(r357745);
double r357747 = t;
double r357748 = 1.0;
double r357749 = r357747 - r357748;
double r357750 = r357746 * r357749;
double r357751 = z;
double r357752 = log(r357751);
double r357753 = y;
double r357754 = r357752 * r357753;
double r357755 = r357750 + r357754;
double r357756 = b;
double r357757 = r357755 - r357756;
double r357758 = exp(r357757);
double r357759 = r357744 * r357758;
double r357760 = r357759 / r357753;
return r357760;
}




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 | 2.1 |
|---|---|
| Target | 10.9 |
| Herbie | 2.1 |
Initial program 2.1
Final simplification2.1
herbie shell --seed 2019194
(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))