\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 -1.333804143538084395085776415371440122739 \cdot 10^{-42} \lor \neg \left(t \le 1.029580973042603122977889054947443375466 \cdot 10^{-146}\right):\\
\;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \left(z \cdot \frac{\sqrt{t + a}}{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 r325776 = x;
double r325777 = y;
double r325778 = 2.0;
double r325779 = z;
double r325780 = t;
double r325781 = a;
double r325782 = r325780 + r325781;
double r325783 = sqrt(r325782);
double r325784 = r325779 * r325783;
double r325785 = r325784 / r325780;
double r325786 = b;
double r325787 = c;
double r325788 = r325786 - r325787;
double r325789 = 5.0;
double r325790 = 6.0;
double r325791 = r325789 / r325790;
double r325792 = r325781 + r325791;
double r325793 = 3.0;
double r325794 = r325780 * r325793;
double r325795 = r325778 / r325794;
double r325796 = r325792 - r325795;
double r325797 = r325788 * r325796;
double r325798 = r325785 - r325797;
double r325799 = r325778 * r325798;
double r325800 = exp(r325799);
double r325801 = r325777 * r325800;
double r325802 = r325776 + r325801;
double r325803 = r325776 / r325802;
return r325803;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r325804 = t;
double r325805 = -1.3338041435380844e-42;
bool r325806 = r325804 <= r325805;
double r325807 = 1.0295809730426031e-146;
bool r325808 = r325804 <= r325807;
double r325809 = !r325808;
bool r325810 = r325806 || r325809;
double r325811 = x;
double r325812 = y;
double r325813 = 2.0;
double r325814 = z;
double r325815 = a;
double r325816 = r325804 + r325815;
double r325817 = sqrt(r325816);
double r325818 = r325817 / r325804;
double r325819 = r325814 * r325818;
double r325820 = b;
double r325821 = c;
double r325822 = r325820 - r325821;
double r325823 = 5.0;
double r325824 = 6.0;
double r325825 = r325823 / r325824;
double r325826 = r325815 + r325825;
double r325827 = 3.0;
double r325828 = r325804 * r325827;
double r325829 = r325813 / r325828;
double r325830 = r325826 - r325829;
double r325831 = r325822 * r325830;
double r325832 = r325819 - r325831;
double r325833 = r325813 * r325832;
double r325834 = exp(r325833);
double r325835 = r325812 * r325834;
double r325836 = r325811 + r325835;
double r325837 = r325811 / r325836;
double r325838 = r325814 * r325817;
double r325839 = r325815 - r325825;
double r325840 = r325839 * r325828;
double r325841 = r325838 * r325840;
double r325842 = r325815 * r325815;
double r325843 = r325825 * r325825;
double r325844 = r325842 - r325843;
double r325845 = r325844 * r325828;
double r325846 = r325839 * r325813;
double r325847 = r325845 - r325846;
double r325848 = r325822 * r325847;
double r325849 = r325804 * r325848;
double r325850 = r325841 - r325849;
double r325851 = r325804 * r325840;
double r325852 = r325850 / r325851;
double r325853 = r325813 * r325852;
double r325854 = exp(r325853);
double r325855 = r325812 * r325854;
double r325856 = r325811 + r325855;
double r325857 = r325811 / r325856;
double r325858 = r325810 ? r325837 : r325857;
return r325858;
}




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 | 3.0 |
if t < -1.3338041435380844e-42 or 1.0295809730426031e-146 < t Initial program 2.3
rmApplied *-un-lft-identity2.3
Applied times-frac0.6
Simplified0.6
if -1.3338041435380844e-42 < t < 1.0295809730426031e-146Initial program 7.0
rmApplied flip-+10.9
Applied frac-sub10.9
Applied associate-*r/10.9
Applied frac-sub8.4
Final simplification3.0
herbie shell --seed 2019235
(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)))))))))))