\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\sqrt[3]{\frac{x \cdot {e}^{\left(\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b\right)}}{y}} \cdot \left(\left(\sqrt[3]{\sqrt[3]{\frac{x \cdot e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}}{y}}} \cdot \left(\sqrt[3]{\sqrt[3]{\frac{x \cdot e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}}{y}}} \cdot \sqrt[3]{\sqrt[3]{\frac{x \cdot e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}}{y}}}\right)\right) \cdot \sqrt[3]{\left(\sqrt[3]{\frac{x \cdot e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}}{y}} \cdot \sqrt[3]{\frac{x \cdot e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}}{y}}\right) \cdot \sqrt[3]{\frac{x \cdot e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}}{y}}}\right)double f(double x, double y, double z, double t, double a, double b) {
double r18633609 = x;
double r18633610 = y;
double r18633611 = z;
double r18633612 = log(r18633611);
double r18633613 = r18633610 * r18633612;
double r18633614 = t;
double r18633615 = 1.0;
double r18633616 = r18633614 - r18633615;
double r18633617 = a;
double r18633618 = log(r18633617);
double r18633619 = r18633616 * r18633618;
double r18633620 = r18633613 + r18633619;
double r18633621 = b;
double r18633622 = r18633620 - r18633621;
double r18633623 = exp(r18633622);
double r18633624 = r18633609 * r18633623;
double r18633625 = r18633624 / r18633610;
return r18633625;
}
double f(double x, double y, double z, double t, double a, double b) {
double r18633626 = x;
double r18633627 = exp(1.0);
double r18633628 = a;
double r18633629 = log(r18633628);
double r18633630 = t;
double r18633631 = 1.0;
double r18633632 = r18633630 - r18633631;
double r18633633 = r18633629 * r18633632;
double r18633634 = z;
double r18633635 = log(r18633634);
double r18633636 = y;
double r18633637 = r18633635 * r18633636;
double r18633638 = r18633633 + r18633637;
double r18633639 = b;
double r18633640 = r18633638 - r18633639;
double r18633641 = pow(r18633627, r18633640);
double r18633642 = r18633626 * r18633641;
double r18633643 = r18633642 / r18633636;
double r18633644 = cbrt(r18633643);
double r18633645 = exp(r18633640);
double r18633646 = r18633626 * r18633645;
double r18633647 = r18633646 / r18633636;
double r18633648 = cbrt(r18633647);
double r18633649 = cbrt(r18633648);
double r18633650 = r18633649 * r18633649;
double r18633651 = r18633649 * r18633650;
double r18633652 = r18633648 * r18633648;
double r18633653 = r18633652 * r18633648;
double r18633654 = cbrt(r18633653);
double r18633655 = r18633651 * r18633654;
double r18633656 = r18633644 * r18633655;
return r18633656;
}




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.7 |
|---|---|
| Target | 11.3 |
| Herbie | 1.7 |
Initial program 1.7
rmApplied add-cube-cbrt1.7
rmApplied *-un-lft-identity1.7
Applied exp-prod1.7
Simplified1.7
rmApplied add-cube-cbrt1.7
rmApplied add-cbrt-cube1.7
Final simplification1.7
herbie shell --seed 2019172 +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))