\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, e^{\mathsf{fma}\left(c - b, \frac{5}{6} + \left(a - \frac{\frac{2}{t}}{3}\right), \left(\sqrt{t + a} \cdot \left(\frac{\sqrt[3]{z}}{\sqrt[3]{t}} \cdot \frac{\sqrt[3]{z}}{\sqrt[3]{t}}\right)\right) \cdot \frac{\sqrt[3]{z}}{\sqrt[3]{t}}\right) \cdot 2}, x\right)}double f(double x, double y, double z, double t, double a, double b, double c) {
double r332699 = x;
double r332700 = y;
double r332701 = 2.0;
double r332702 = z;
double r332703 = t;
double r332704 = a;
double r332705 = r332703 + r332704;
double r332706 = sqrt(r332705);
double r332707 = r332702 * r332706;
double r332708 = r332707 / r332703;
double r332709 = b;
double r332710 = c;
double r332711 = r332709 - r332710;
double r332712 = 5.0;
double r332713 = 6.0;
double r332714 = r332712 / r332713;
double r332715 = r332704 + r332714;
double r332716 = 3.0;
double r332717 = r332703 * r332716;
double r332718 = r332701 / r332717;
double r332719 = r332715 - r332718;
double r332720 = r332711 * r332719;
double r332721 = r332708 - r332720;
double r332722 = r332701 * r332721;
double r332723 = exp(r332722);
double r332724 = r332700 * r332723;
double r332725 = r332699 + r332724;
double r332726 = r332699 / r332725;
return r332726;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r332727 = x;
double r332728 = y;
double r332729 = c;
double r332730 = b;
double r332731 = r332729 - r332730;
double r332732 = 5.0;
double r332733 = 6.0;
double r332734 = r332732 / r332733;
double r332735 = a;
double r332736 = 2.0;
double r332737 = t;
double r332738 = r332736 / r332737;
double r332739 = 3.0;
double r332740 = r332738 / r332739;
double r332741 = r332735 - r332740;
double r332742 = r332734 + r332741;
double r332743 = r332737 + r332735;
double r332744 = sqrt(r332743);
double r332745 = z;
double r332746 = cbrt(r332745);
double r332747 = cbrt(r332737);
double r332748 = r332746 / r332747;
double r332749 = r332748 * r332748;
double r332750 = r332744 * r332749;
double r332751 = r332750 * r332748;
double r332752 = fma(r332731, r332742, r332751);
double r332753 = r332752 * r332736;
double r332754 = exp(r332753);
double r332755 = fma(r332728, r332754, r332727);
double r332756 = r332727 / r332755;
return r332756;
}




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 | 4.2 |
|---|---|
| Target | 3.0 |
| Herbie | 1.5 |
Initial program 4.2
Simplified2.0
rmApplied add-cube-cbrt2.0
Applied add-cube-cbrt2.0
Applied times-frac2.0
Applied associate-*r*1.5
Simplified1.5
Final simplification1.5
herbie shell --seed 2019196 +o rules:numerics
(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)))))))))))