\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)}}\frac{x}{\mathsf{fma}\left(y, {\left(e^{2}\right)}^{\left(\mathsf{fma}\left(\frac{\frac{2}{3}}{t} - \left(a + \frac{5}{6}\right), b - c, \frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}}\right)\right)}, x\right)}double f(double x, double y, double z, double t, double a, double b, double c) {
double r433390 = x;
double r433391 = y;
double r433392 = 2.0;
double r433393 = z;
double r433394 = t;
double r433395 = a;
double r433396 = r433394 + r433395;
double r433397 = sqrt(r433396);
double r433398 = r433393 * r433397;
double r433399 = r433398 / r433394;
double r433400 = b;
double r433401 = c;
double r433402 = r433400 - r433401;
double r433403 = 5.0;
double r433404 = 6.0;
double r433405 = r433403 / r433404;
double r433406 = r433395 + r433405;
double r433407 = 3.0;
double r433408 = r433394 * r433407;
double r433409 = r433392 / r433408;
double r433410 = r433406 - r433409;
double r433411 = r433402 * r433410;
double r433412 = r433399 - r433411;
double r433413 = r433392 * r433412;
double r433414 = exp(r433413);
double r433415 = r433391 * r433414;
double r433416 = r433390 + r433415;
double r433417 = r433390 / r433416;
return r433417;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r433418 = x;
double r433419 = y;
double r433420 = 2.0;
double r433421 = exp(r433420);
double r433422 = 3.0;
double r433423 = r433420 / r433422;
double r433424 = t;
double r433425 = r433423 / r433424;
double r433426 = a;
double r433427 = 5.0;
double r433428 = 6.0;
double r433429 = r433427 / r433428;
double r433430 = r433426 + r433429;
double r433431 = r433425 - r433430;
double r433432 = b;
double r433433 = c;
double r433434 = r433432 - r433433;
double r433435 = z;
double r433436 = cbrt(r433424);
double r433437 = r433436 * r433436;
double r433438 = r433435 / r433437;
double r433439 = r433424 + r433426;
double r433440 = sqrt(r433439);
double r433441 = r433440 / r433436;
double r433442 = r433438 * r433441;
double r433443 = fma(r433431, r433434, r433442);
double r433444 = pow(r433421, r433443);
double r433445 = fma(r433419, r433444, r433418);
double r433446 = r433418 / r433445;
return r433446;
}




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 | 4.0 |
|---|---|
| Target | 3.0 |
| Herbie | 1.5 |
Initial program 4.0
Simplified2.7
rmApplied add-cube-cbrt2.7
Applied times-frac1.5
Final simplification1.5
herbie shell --seed 2020043 +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)))))))))))