\frac{x}{x + y \cdot e^{2 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}\frac{x}{x + y \cdot e^{\left(\frac{\sqrt{a + t}}{\sqrt[3]{t}} \cdot \frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}} - \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right) \cdot \left(b - c\right)\right) \cdot 2}}double f(double x, double y, double z, double t, double a, double b, double c) {
double r22285646 = x;
double r22285647 = y;
double r22285648 = 2.0;
double r22285649 = z;
double r22285650 = t;
double r22285651 = a;
double r22285652 = r22285650 + r22285651;
double r22285653 = sqrt(r22285652);
double r22285654 = r22285649 * r22285653;
double r22285655 = r22285654 / r22285650;
double r22285656 = b;
double r22285657 = c;
double r22285658 = r22285656 - r22285657;
double r22285659 = 5.0;
double r22285660 = 6.0;
double r22285661 = r22285659 / r22285660;
double r22285662 = r22285651 + r22285661;
double r22285663 = 3.0;
double r22285664 = r22285650 * r22285663;
double r22285665 = r22285648 / r22285664;
double r22285666 = r22285662 - r22285665;
double r22285667 = r22285658 * r22285666;
double r22285668 = r22285655 - r22285667;
double r22285669 = r22285648 * r22285668;
double r22285670 = exp(r22285669);
double r22285671 = r22285647 * r22285670;
double r22285672 = r22285646 + r22285671;
double r22285673 = r22285646 / r22285672;
return r22285673;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r22285674 = x;
double r22285675 = y;
double r22285676 = a;
double r22285677 = t;
double r22285678 = r22285676 + r22285677;
double r22285679 = sqrt(r22285678);
double r22285680 = cbrt(r22285677);
double r22285681 = r22285679 / r22285680;
double r22285682 = z;
double r22285683 = r22285680 * r22285680;
double r22285684 = r22285682 / r22285683;
double r22285685 = r22285681 * r22285684;
double r22285686 = 5.0;
double r22285687 = 6.0;
double r22285688 = r22285686 / r22285687;
double r22285689 = r22285676 + r22285688;
double r22285690 = 2.0;
double r22285691 = 3.0;
double r22285692 = r22285677 * r22285691;
double r22285693 = r22285690 / r22285692;
double r22285694 = r22285689 - r22285693;
double r22285695 = b;
double r22285696 = c;
double r22285697 = r22285695 - r22285696;
double r22285698 = r22285694 * r22285697;
double r22285699 = r22285685 - r22285698;
double r22285700 = r22285699 * r22285690;
double r22285701 = exp(r22285700);
double r22285702 = r22285675 * r22285701;
double r22285703 = r22285674 + r22285702;
double r22285704 = r22285674 / r22285703;
return r22285704;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 4.0 |
|---|---|
| Target | 3.3 |
| Herbie | 2.8 |
Initial program 4.0
rmApplied add-cube-cbrt4.0
Applied times-frac2.8
Final simplification2.8
herbie shell --seed 2019179
(FPCore (x y z t a b c)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, I"
:herbie-target
(if (< t -2.118326644891581e-50) (/ x (+ x (* y (exp (* 2.0 (- (+ (* a c) (* 0.8333333333333334 c)) (* a b))))))) (if (< t 5.196588770651547e-123) (/ x (+ x (* y (exp (* 2.0 (/ (- (* (* z (sqrt (+ t a))) (* (* 3.0 t) (- a (/ 5.0 6.0)))) (* (- (* (+ (/ 5.0 6.0) a) (* 3.0 t)) 2.0) (* (- a (/ 5.0 6.0)) (* (- b c) t)))) (* (* (* t t) 3.0) (- a (/ 5.0 6.0))))))))) (/ x (+ x (* y (exp (* 2.0 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0))))))))))))
(/ x (+ x (* y (exp (* 2.0 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0)))))))))))