\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}\;b - c \le -4.677722176614463518561403813060778277876 \cdot 10^{174} \lor \neg \left(b - c \le -4018107214177334460416\right):\\
\;\;\;\;\frac{x}{x + e^{2 \cdot \mathsf{fma}\left(z, \frac{\sqrt{t + a}}{t}, \left(b - c\right) \cdot \left(-\left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)\right)} \cdot y}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{\mathsf{fma}\left(y, {\left(e^{2}\right)}^{\left(\log \left(e^{\mathsf{fma}\left(\frac{\frac{2}{t}}{3} - \left(a + \frac{5}{6}\right), b - c, \frac{z \cdot \sqrt{t + a}}{t}\right)}\right)\right)}, x\right)}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r432035 = x;
double r432036 = y;
double r432037 = 2.0;
double r432038 = z;
double r432039 = t;
double r432040 = a;
double r432041 = r432039 + r432040;
double r432042 = sqrt(r432041);
double r432043 = r432038 * r432042;
double r432044 = r432043 / r432039;
double r432045 = b;
double r432046 = c;
double r432047 = r432045 - r432046;
double r432048 = 5.0;
double r432049 = 6.0;
double r432050 = r432048 / r432049;
double r432051 = r432040 + r432050;
double r432052 = 3.0;
double r432053 = r432039 * r432052;
double r432054 = r432037 / r432053;
double r432055 = r432051 - r432054;
double r432056 = r432047 * r432055;
double r432057 = r432044 - r432056;
double r432058 = r432037 * r432057;
double r432059 = exp(r432058);
double r432060 = r432036 * r432059;
double r432061 = r432035 + r432060;
double r432062 = r432035 / r432061;
return r432062;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r432063 = b;
double r432064 = c;
double r432065 = r432063 - r432064;
double r432066 = -4.6777221766144635e+174;
bool r432067 = r432065 <= r432066;
double r432068 = -4.0181072141773345e+21;
bool r432069 = r432065 <= r432068;
double r432070 = !r432069;
bool r432071 = r432067 || r432070;
double r432072 = x;
double r432073 = 2.0;
double r432074 = z;
double r432075 = t;
double r432076 = a;
double r432077 = r432075 + r432076;
double r432078 = sqrt(r432077);
double r432079 = r432078 / r432075;
double r432080 = 5.0;
double r432081 = 6.0;
double r432082 = r432080 / r432081;
double r432083 = r432076 + r432082;
double r432084 = 3.0;
double r432085 = r432075 * r432084;
double r432086 = r432073 / r432085;
double r432087 = r432083 - r432086;
double r432088 = -r432087;
double r432089 = r432065 * r432088;
double r432090 = fma(r432074, r432079, r432089);
double r432091 = r432073 * r432090;
double r432092 = exp(r432091);
double r432093 = y;
double r432094 = r432092 * r432093;
double r432095 = r432072 + r432094;
double r432096 = r432072 / r432095;
double r432097 = exp(r432073);
double r432098 = r432073 / r432075;
double r432099 = r432098 / r432084;
double r432100 = r432099 - r432083;
double r432101 = r432074 * r432078;
double r432102 = r432101 / r432075;
double r432103 = fma(r432100, r432065, r432102);
double r432104 = exp(r432103);
double r432105 = log(r432104);
double r432106 = pow(r432097, r432105);
double r432107 = fma(r432093, r432106, r432072);
double r432108 = r432072 / r432107;
double r432109 = r432071 ? r432096 : r432108;
return r432109;
}




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 | 3.8 |
|---|---|
| Target | 3.1 |
| Herbie | 2.0 |
if (- b c) < -4.6777221766144635e+174 or -4.0181072141773345e+21 < (- b c) Initial program 3.8
rmApplied *-un-lft-identity3.8
Applied times-frac3.3
Applied fma-neg2.0
Simplified2.0
if -4.6777221766144635e+174 < (- b c) < -4.0181072141773345e+21Initial program 4.0
Simplified1.9
rmApplied add-log-exp1.9
Final simplification2.0
herbie shell --seed 2019350 +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)))))))))))