\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 -5.869458934952860147042895437611662296973 \cdot 10^{-296} \lor \neg \left(t \le 3.585798647479515118878164820573513844078 \cdot 10^{-110}\right):\\
\;\;\;\;\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{0.6666666666666666296592325124947819858789}{t}\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 r336900 = x;
double r336901 = y;
double r336902 = 2.0;
double r336903 = z;
double r336904 = t;
double r336905 = a;
double r336906 = r336904 + r336905;
double r336907 = sqrt(r336906);
double r336908 = r336903 * r336907;
double r336909 = r336908 / r336904;
double r336910 = b;
double r336911 = c;
double r336912 = r336910 - r336911;
double r336913 = 5.0;
double r336914 = 6.0;
double r336915 = r336913 / r336914;
double r336916 = r336905 + r336915;
double r336917 = 3.0;
double r336918 = r336904 * r336917;
double r336919 = r336902 / r336918;
double r336920 = r336916 - r336919;
double r336921 = r336912 * r336920;
double r336922 = r336909 - r336921;
double r336923 = r336902 * r336922;
double r336924 = exp(r336923);
double r336925 = r336901 * r336924;
double r336926 = r336900 + r336925;
double r336927 = r336900 / r336926;
return r336927;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r336928 = t;
double r336929 = -5.86945893495286e-296;
bool r336930 = r336928 <= r336929;
double r336931 = 3.585798647479515e-110;
bool r336932 = r336928 <= r336931;
double r336933 = !r336932;
bool r336934 = r336930 || r336933;
double r336935 = x;
double r336936 = y;
double r336937 = 2.0;
double r336938 = z;
double r336939 = a;
double r336940 = r336928 + r336939;
double r336941 = sqrt(r336940);
double r336942 = r336938 * r336941;
double r336943 = r336942 / r336928;
double r336944 = b;
double r336945 = c;
double r336946 = r336944 - r336945;
double r336947 = 5.0;
double r336948 = 6.0;
double r336949 = r336947 / r336948;
double r336950 = r336939 + r336949;
double r336951 = 0.6666666666666666;
double r336952 = r336951 / r336928;
double r336953 = r336950 - r336952;
double r336954 = r336946 * r336953;
double r336955 = r336943 - r336954;
double r336956 = r336937 * r336955;
double r336957 = exp(r336956);
double r336958 = r336936 * r336957;
double r336959 = r336935 + r336958;
double r336960 = r336935 / r336959;
double r336961 = r336939 - r336949;
double r336962 = 3.0;
double r336963 = r336928 * r336962;
double r336964 = r336961 * r336963;
double r336965 = r336942 * r336964;
double r336966 = r336939 * r336939;
double r336967 = r336949 * r336949;
double r336968 = r336966 - r336967;
double r336969 = r336968 * r336963;
double r336970 = r336961 * r336937;
double r336971 = r336969 - r336970;
double r336972 = r336946 * r336971;
double r336973 = r336928 * r336972;
double r336974 = r336965 - r336973;
double r336975 = r336928 * r336964;
double r336976 = r336974 / r336975;
double r336977 = r336937 * r336976;
double r336978 = exp(r336977);
double r336979 = r336936 * r336978;
double r336980 = r336935 + r336979;
double r336981 = r336935 / r336980;
double r336982 = r336934 ? r336960 : r336981;
return r336982;
}




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.7 |
|---|---|
| Target | 2.9 |
| Herbie | 4.0 |
if t < -5.86945893495286e-296 or 3.585798647479515e-110 < t Initial program 3.0
Taylor expanded around 0 3.0
if -5.86945893495286e-296 < t < 3.585798647479515e-110Initial program 6.6
rmApplied flip-+10.6
Applied frac-sub10.7
Applied associate-*r/10.7
Applied frac-sub7.8
Final simplification4.0
herbie shell --seed 2019306
(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)))))))))))