\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}{\mathsf{fma}\left(y, {\left(e^{2}\right)}^{\left(\mathsf{fma}\left(\frac{\frac{2}{t}}{3} - \left(a + \frac{5}{6}\right), b - c, \frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}}\right)\right)}, x\right)}double f(double x, double y, double z, double t, double a, double b, double c) {
double r232702 = x;
double r232703 = y;
double r232704 = 2.0;
double r232705 = z;
double r232706 = t;
double r232707 = a;
double r232708 = r232706 + r232707;
double r232709 = sqrt(r232708);
double r232710 = r232705 * r232709;
double r232711 = r232710 / r232706;
double r232712 = b;
double r232713 = c;
double r232714 = r232712 - r232713;
double r232715 = 5.0;
double r232716 = 6.0;
double r232717 = r232715 / r232716;
double r232718 = r232707 + r232717;
double r232719 = 3.0;
double r232720 = r232706 * r232719;
double r232721 = r232704 / r232720;
double r232722 = r232718 - r232721;
double r232723 = r232714 * r232722;
double r232724 = r232711 - r232723;
double r232725 = r232704 * r232724;
double r232726 = exp(r232725);
double r232727 = r232703 * r232726;
double r232728 = r232702 + r232727;
double r232729 = r232702 / r232728;
return r232729;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r232730 = x;
double r232731 = y;
double r232732 = 2.0;
double r232733 = exp(r232732);
double r232734 = t;
double r232735 = r232732 / r232734;
double r232736 = 3.0;
double r232737 = r232735 / r232736;
double r232738 = a;
double r232739 = 5.0;
double r232740 = 6.0;
double r232741 = r232739 / r232740;
double r232742 = r232738 + r232741;
double r232743 = r232737 - r232742;
double r232744 = b;
double r232745 = c;
double r232746 = r232744 - r232745;
double r232747 = z;
double r232748 = cbrt(r232734);
double r232749 = r232748 * r232748;
double r232750 = r232747 / r232749;
double r232751 = r232734 + r232738;
double r232752 = sqrt(r232751);
double r232753 = r232752 / r232748;
double r232754 = r232750 * r232753;
double r232755 = fma(r232743, r232746, r232754);
double r232756 = pow(r232733, r232755);
double r232757 = fma(r232731, r232756, r232730);
double r232758 = r232730 / r232757;
return r232758;
}




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
| Original | 3.8 |
|---|---|
| Target | 2.9 |
| Herbie | 1.4 |
Initial program 3.8
Simplified2.5
rmApplied add-cube-cbrt2.5
Applied times-frac1.4
Final simplification1.4
herbie shell --seed 2019304 +o rules:numerics
(FPCore (x y z t a b c)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, I"
:precision binary64
:herbie-target
(if (< t -2.1183266448915811e-50) (/ x (+ x (* y (exp (* 2 (- (+ (* a c) (* 0.83333333333333337 c)) (* a b))))))) (if (< t 5.19658877065154709e-123) (/ x (+ x (* y (exp (* 2 (/ (- (* (* z (sqrt (+ t a))) (* (* 3 t) (- a (/ 5 6)))) (* (- (* (+ (/ 5 6) a) (* 3 t)) 2) (* (- a (/ 5 6)) (* (- b c) t)))) (* (* (* t t) 3) (- a (/ 5 6))))))))) (/ x (+ x (* y (exp (* 2 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5 6)) (/ 2 (* t 3))))))))))))
(/ x (+ x (* y (exp (* 2 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5 6)) (/ 2 (* t 3)))))))))))