\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}\;a \le 2.108535095172928346218613549125577993008 \cdot 10^{241}:\\
\;\;\;\;\frac{x}{x + e^{\left(\left(\left(a - \frac{0.6666666666666666296592325124947819858789}{t}\right) + \frac{5}{6}\right) \cdot \left(c - b\right) + \left(\frac{z}{\sqrt[3]{t}} \cdot \frac{\left|\sqrt[3]{a + t}\right|}{\sqrt[3]{t}}\right) \cdot \frac{\sqrt{\sqrt[3]{a + t}}}{\sqrt[3]{t}}\right) \cdot 2} \cdot y}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{x + e^{2 \cdot \left(a \cdot \left(c - b\right) - b \cdot 0.8333333333333333703407674875052180141211\right)} \cdot y}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r391212 = x;
double r391213 = y;
double r391214 = 2.0;
double r391215 = z;
double r391216 = t;
double r391217 = a;
double r391218 = r391216 + r391217;
double r391219 = sqrt(r391218);
double r391220 = r391215 * r391219;
double r391221 = r391220 / r391216;
double r391222 = b;
double r391223 = c;
double r391224 = r391222 - r391223;
double r391225 = 5.0;
double r391226 = 6.0;
double r391227 = r391225 / r391226;
double r391228 = r391217 + r391227;
double r391229 = 3.0;
double r391230 = r391216 * r391229;
double r391231 = r391214 / r391230;
double r391232 = r391228 - r391231;
double r391233 = r391224 * r391232;
double r391234 = r391221 - r391233;
double r391235 = r391214 * r391234;
double r391236 = exp(r391235);
double r391237 = r391213 * r391236;
double r391238 = r391212 + r391237;
double r391239 = r391212 / r391238;
return r391239;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r391240 = a;
double r391241 = 2.1085350951729283e+241;
bool r391242 = r391240 <= r391241;
double r391243 = x;
double r391244 = 0.6666666666666666;
double r391245 = t;
double r391246 = r391244 / r391245;
double r391247 = r391240 - r391246;
double r391248 = 5.0;
double r391249 = 6.0;
double r391250 = r391248 / r391249;
double r391251 = r391247 + r391250;
double r391252 = c;
double r391253 = b;
double r391254 = r391252 - r391253;
double r391255 = r391251 * r391254;
double r391256 = z;
double r391257 = cbrt(r391245);
double r391258 = r391256 / r391257;
double r391259 = r391240 + r391245;
double r391260 = cbrt(r391259);
double r391261 = fabs(r391260);
double r391262 = r391261 / r391257;
double r391263 = r391258 * r391262;
double r391264 = sqrt(r391260);
double r391265 = r391264 / r391257;
double r391266 = r391263 * r391265;
double r391267 = r391255 + r391266;
double r391268 = 2.0;
double r391269 = r391267 * r391268;
double r391270 = exp(r391269);
double r391271 = y;
double r391272 = r391270 * r391271;
double r391273 = r391243 + r391272;
double r391274 = r391243 / r391273;
double r391275 = r391240 * r391254;
double r391276 = 0.8333333333333334;
double r391277 = r391253 * r391276;
double r391278 = r391275 - r391277;
double r391279 = r391268 * r391278;
double r391280 = exp(r391279);
double r391281 = r391280 * r391271;
double r391282 = r391243 + r391281;
double r391283 = r391243 / r391282;
double r391284 = r391242 ? r391274 : r391283;
return r391284;
}




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 | 2.8 |
| Herbie | 2.9 |
if a < 2.1085350951729283e+241Initial program 3.3
Simplified2.9
rmApplied add-log-exp8.9
Taylor expanded around 0 2.9
rmApplied add-cube-cbrt2.9
Applied add-cube-cbrt2.9
Applied sqrt-prod2.9
Applied times-frac2.9
Applied associate-*r*2.4
Simplified2.4
if 2.1085350951729283e+241 < a Initial program 8.3
Simplified8.5
rmApplied add-log-exp16.6
Taylor expanded around inf 13.8
Simplified7.1
Final simplification2.9
herbie shell --seed 2019194
(FPCore (x y z t a b c)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, I"
:herbie-target
(if (< t -2.118326644891581e-50) (/ x (+ x (* y (exp (* 2.0 (- (+ (* a c) (* 0.8333333333333334 c)) (* a b))))))) (if (< t 5.196588770651547e-123) (/ x (+ x (* y (exp (* 2.0 (/ (- (* (* z (sqrt (+ t a))) (* (* 3.0 t) (- a (/ 5.0 6.0)))) (* (- (* (+ (/ 5.0 6.0) a) (* 3.0 t)) 2.0) (* (- a (/ 5.0 6.0)) (* (- b c) t)))) (* (* (* t t) 3.0) (- a (/ 5.0 6.0))))))))) (/ x (+ x (* y (exp (* 2.0 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0))))))))))))
(/ x (+ x (* y (exp (* 2.0 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0)))))))))))