\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 -2.0159840576688351 \cdot 10^{48}:\\
\;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \left(\left(a \cdot c + 0.83333333333333337 \cdot c\right) - a \cdot b\right)}}\\
\mathbf{elif}\;t \le 4.062741574579635 \cdot 10^{-103}:\\
\;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \frac{z \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right) - \frac{t}{\sqrt{t + a}} \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)}{\frac{t}{\sqrt{t + a}} \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right)}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \left(\frac{z}{\frac{t}{\sqrt{t + a}}} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - {\left({\left(\frac{2}{t \cdot 3}\right)}^{3}\right)}^{\frac{1}{3}}\right)\right)}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r375975 = x;
double r375976 = y;
double r375977 = 2.0;
double r375978 = z;
double r375979 = t;
double r375980 = a;
double r375981 = r375979 + r375980;
double r375982 = sqrt(r375981);
double r375983 = r375978 * r375982;
double r375984 = r375983 / r375979;
double r375985 = b;
double r375986 = c;
double r375987 = r375985 - r375986;
double r375988 = 5.0;
double r375989 = 6.0;
double r375990 = r375988 / r375989;
double r375991 = r375980 + r375990;
double r375992 = 3.0;
double r375993 = r375979 * r375992;
double r375994 = r375977 / r375993;
double r375995 = r375991 - r375994;
double r375996 = r375987 * r375995;
double r375997 = r375984 - r375996;
double r375998 = r375977 * r375997;
double r375999 = exp(r375998);
double r376000 = r375976 * r375999;
double r376001 = r375975 + r376000;
double r376002 = r375975 / r376001;
return r376002;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r376003 = t;
double r376004 = -2.015984057668835e+48;
bool r376005 = r376003 <= r376004;
double r376006 = x;
double r376007 = y;
double r376008 = 2.0;
double r376009 = a;
double r376010 = c;
double r376011 = r376009 * r376010;
double r376012 = 0.8333333333333334;
double r376013 = r376012 * r376010;
double r376014 = r376011 + r376013;
double r376015 = b;
double r376016 = r376009 * r376015;
double r376017 = r376014 - r376016;
double r376018 = r376008 * r376017;
double r376019 = exp(r376018);
double r376020 = r376007 * r376019;
double r376021 = r376006 + r376020;
double r376022 = r376006 / r376021;
double r376023 = 4.062741574579635e-103;
bool r376024 = r376003 <= r376023;
double r376025 = z;
double r376026 = 5.0;
double r376027 = 6.0;
double r376028 = r376026 / r376027;
double r376029 = r376009 - r376028;
double r376030 = 3.0;
double r376031 = r376003 * r376030;
double r376032 = r376029 * r376031;
double r376033 = r376025 * r376032;
double r376034 = r376003 + r376009;
double r376035 = sqrt(r376034);
double r376036 = r376003 / r376035;
double r376037 = r376015 - r376010;
double r376038 = r376009 * r376009;
double r376039 = r376028 * r376028;
double r376040 = r376038 - r376039;
double r376041 = r376040 * r376031;
double r376042 = r376029 * r376008;
double r376043 = r376041 - r376042;
double r376044 = r376037 * r376043;
double r376045 = r376036 * r376044;
double r376046 = r376033 - r376045;
double r376047 = r376036 * r376032;
double r376048 = r376046 / r376047;
double r376049 = r376008 * r376048;
double r376050 = exp(r376049);
double r376051 = r376007 * r376050;
double r376052 = r376006 + r376051;
double r376053 = r376006 / r376052;
double r376054 = r376025 / r376036;
double r376055 = r376009 + r376028;
double r376056 = r376008 / r376031;
double r376057 = 3.0;
double r376058 = pow(r376056, r376057);
double r376059 = 0.3333333333333333;
double r376060 = pow(r376058, r376059);
double r376061 = r376055 - r376060;
double r376062 = r376037 * r376061;
double r376063 = r376054 - r376062;
double r376064 = r376008 * r376063;
double r376065 = exp(r376064);
double r376066 = r376007 * r376065;
double r376067 = r376006 + r376066;
double r376068 = r376006 / r376067;
double r376069 = r376024 ? r376053 : r376068;
double r376070 = r376005 ? r376022 : r376069;
return r376070;
}




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 | 4.0 |
|---|---|
| Target | 3.1 |
| Herbie | 5.1 |
if t < -2.015984057668835e+48Initial program 5.3
Taylor expanded around inf 7.8
if -2.015984057668835e+48 < t < 4.062741574579635e-103Initial program 6.4
rmApplied associate-/l*7.6
rmApplied flip-+10.2
Applied frac-sub10.6
Applied associate-*r/10.6
Applied frac-sub11.4
if 4.062741574579635e-103 < t Initial program 2.1
rmApplied associate-/l*0.3
rmApplied add-cbrt-cube0.3
Applied add-cbrt-cube0.3
Applied cbrt-unprod0.3
Applied add-cbrt-cube0.3
Applied cbrt-undiv0.3
Simplified0.3
rmApplied pow1/30.3
Final simplification5.1
herbie shell --seed 2020024
(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)))))))))))