\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)}}\begin{array}{l}
\mathbf{if}\;t \le -4.241328107912876616020053764054146250544 \cdot 10^{-302} \lor \neg \left(t \le 6.832605321738832105913041607505091900967 \cdot 10^{-199}\right):\\
\;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \left(\frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \frac{\left(z \cdot \sqrt{t + a}\right) \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right) - t \cdot \left(\left(b - c\right) \cdot \left(\left(a \cdot a - \frac{5}{6} \cdot \frac{5}{6}\right) \cdot \left(t \cdot 3\right) - \left(a - \frac{5}{6}\right) \cdot 2\right)\right)}{t \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right)}}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r424789 = x;
double r424790 = y;
double r424791 = 2.0;
double r424792 = z;
double r424793 = t;
double r424794 = a;
double r424795 = r424793 + r424794;
double r424796 = sqrt(r424795);
double r424797 = r424792 * r424796;
double r424798 = r424797 / r424793;
double r424799 = b;
double r424800 = c;
double r424801 = r424799 - r424800;
double r424802 = 5.0;
double r424803 = 6.0;
double r424804 = r424802 / r424803;
double r424805 = r424794 + r424804;
double r424806 = 3.0;
double r424807 = r424793 * r424806;
double r424808 = r424791 / r424807;
double r424809 = r424805 - r424808;
double r424810 = r424801 * r424809;
double r424811 = r424798 - r424810;
double r424812 = r424791 * r424811;
double r424813 = exp(r424812);
double r424814 = r424790 * r424813;
double r424815 = r424789 + r424814;
double r424816 = r424789 / r424815;
return r424816;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r424817 = t;
double r424818 = -4.2413281079128766e-302;
bool r424819 = r424817 <= r424818;
double r424820 = 6.832605321738832e-199;
bool r424821 = r424817 <= r424820;
double r424822 = !r424821;
bool r424823 = r424819 || r424822;
double r424824 = x;
double r424825 = y;
double r424826 = 2.0;
double r424827 = z;
double r424828 = cbrt(r424817);
double r424829 = r424828 * r424828;
double r424830 = r424827 / r424829;
double r424831 = a;
double r424832 = r424817 + r424831;
double r424833 = sqrt(r424832);
double r424834 = r424833 / r424828;
double r424835 = r424830 * r424834;
double r424836 = b;
double r424837 = c;
double r424838 = r424836 - r424837;
double r424839 = 5.0;
double r424840 = 6.0;
double r424841 = r424839 / r424840;
double r424842 = r424831 + r424841;
double r424843 = 3.0;
double r424844 = r424817 * r424843;
double r424845 = r424826 / r424844;
double r424846 = r424842 - r424845;
double r424847 = r424838 * r424846;
double r424848 = r424835 - r424847;
double r424849 = r424826 * r424848;
double r424850 = exp(r424849);
double r424851 = r424825 * r424850;
double r424852 = r424824 + r424851;
double r424853 = r424824 / r424852;
double r424854 = r424827 * r424833;
double r424855 = r424831 - r424841;
double r424856 = r424855 * r424844;
double r424857 = r424854 * r424856;
double r424858 = r424831 * r424831;
double r424859 = r424841 * r424841;
double r424860 = r424858 - r424859;
double r424861 = r424860 * r424844;
double r424862 = r424855 * r424826;
double r424863 = r424861 - r424862;
double r424864 = r424838 * r424863;
double r424865 = r424817 * r424864;
double r424866 = r424857 - r424865;
double r424867 = r424817 * r424856;
double r424868 = r424866 / r424867;
double r424869 = r424826 * r424868;
double r424870 = exp(r424869);
double r424871 = r424825 * r424870;
double r424872 = r424824 + r424871;
double r424873 = r424824 / r424872;
double r424874 = r424823 ? r424853 : r424873;
return r424874;
}




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 | 3.8 |
|---|---|
| Target | 3.0 |
| Herbie | 2.7 |
if t < -4.2413281079128766e-302 or 6.832605321738832e-199 < t Initial program 3.3
rmApplied add-cube-cbrt3.3
Applied times-frac1.9
if -4.2413281079128766e-302 < t < 6.832605321738832e-199Initial program 8.3
rmApplied flip-+13.4
Applied frac-sub13.4
Applied associate-*r/13.4
Applied frac-sub10.2
Final simplification2.7
herbie shell --seed 2019354
(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)))))))))))