\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{\sqrt[3]{z} \cdot \sqrt[3]{z}}{\sqrt[3]{t}} \cdot \left(\frac{\sqrt[3]{z}}{\sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}}\right)\right)\right)}, x\right)}double f(double x, double y, double z, double t, double a, double b, double c) {
double r228750 = x;
double r228751 = y;
double r228752 = 2.0;
double r228753 = z;
double r228754 = t;
double r228755 = a;
double r228756 = r228754 + r228755;
double r228757 = sqrt(r228756);
double r228758 = r228753 * r228757;
double r228759 = r228758 / r228754;
double r228760 = b;
double r228761 = c;
double r228762 = r228760 - r228761;
double r228763 = 5.0;
double r228764 = 6.0;
double r228765 = r228763 / r228764;
double r228766 = r228755 + r228765;
double r228767 = 3.0;
double r228768 = r228754 * r228767;
double r228769 = r228752 / r228768;
double r228770 = r228766 - r228769;
double r228771 = r228762 * r228770;
double r228772 = r228759 - r228771;
double r228773 = r228752 * r228772;
double r228774 = exp(r228773);
double r228775 = r228751 * r228774;
double r228776 = r228750 + r228775;
double r228777 = r228750 / r228776;
return r228777;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r228778 = x;
double r228779 = y;
double r228780 = 2.0;
double r228781 = exp(r228780);
double r228782 = t;
double r228783 = r228780 / r228782;
double r228784 = 3.0;
double r228785 = r228783 / r228784;
double r228786 = a;
double r228787 = 5.0;
double r228788 = 6.0;
double r228789 = r228787 / r228788;
double r228790 = r228786 + r228789;
double r228791 = r228785 - r228790;
double r228792 = b;
double r228793 = c;
double r228794 = r228792 - r228793;
double r228795 = z;
double r228796 = cbrt(r228795);
double r228797 = r228796 * r228796;
double r228798 = cbrt(r228782);
double r228799 = r228797 / r228798;
double r228800 = r228796 / r228798;
double r228801 = r228782 + r228786;
double r228802 = sqrt(r228801);
double r228803 = r228802 / r228798;
double r228804 = r228800 * r228803;
double r228805 = r228799 * r228804;
double r228806 = fma(r228791, r228794, r228805);
double r228807 = pow(r228781, r228806);
double r228808 = fma(r228779, r228807, r228778);
double r228809 = r228778 / r228808;
return r228809;
}




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.1 |
|---|---|
| Target | 3.0 |
| Herbie | 1.4 |
Initial program 4.1
Simplified2.6
rmApplied add-cube-cbrt2.6
Applied times-frac1.5
rmApplied add-cube-cbrt1.5
Applied times-frac1.5
Applied associate-*l*1.4
Final simplification1.4
herbie shell --seed 2019325 +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.118326644891581e-50) (/ x (+ x (* y (exp (* 2 (- (+ (* a c) (* 0.8333333333333334 c)) (* a b))))))) (if (< t 5.196588770651547e-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)))))))))))