\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}{x + y \cdot e^{\left(\left(\frac{5}{6} + \left(a - \frac{\frac{2}{3}}{t}\right)\right) \cdot \left(c - b\right) + \frac{\sqrt{a + t}}{\sqrt[3]{t}} \cdot \frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}}\right) \cdot 2}}double f(double x, double y, double z, double t, double a, double b, double c) {
double r425525 = x;
double r425526 = y;
double r425527 = 2.0;
double r425528 = z;
double r425529 = t;
double r425530 = a;
double r425531 = r425529 + r425530;
double r425532 = sqrt(r425531);
double r425533 = r425528 * r425532;
double r425534 = r425533 / r425529;
double r425535 = b;
double r425536 = c;
double r425537 = r425535 - r425536;
double r425538 = 5.0;
double r425539 = 6.0;
double r425540 = r425538 / r425539;
double r425541 = r425530 + r425540;
double r425542 = 3.0;
double r425543 = r425529 * r425542;
double r425544 = r425527 / r425543;
double r425545 = r425541 - r425544;
double r425546 = r425537 * r425545;
double r425547 = r425534 - r425546;
double r425548 = r425527 * r425547;
double r425549 = exp(r425548);
double r425550 = r425526 * r425549;
double r425551 = r425525 + r425550;
double r425552 = r425525 / r425551;
return r425552;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r425553 = x;
double r425554 = y;
double r425555 = 5.0;
double r425556 = 6.0;
double r425557 = r425555 / r425556;
double r425558 = a;
double r425559 = 2.0;
double r425560 = 3.0;
double r425561 = r425559 / r425560;
double r425562 = t;
double r425563 = r425561 / r425562;
double r425564 = r425558 - r425563;
double r425565 = r425557 + r425564;
double r425566 = c;
double r425567 = b;
double r425568 = r425566 - r425567;
double r425569 = r425565 * r425568;
double r425570 = r425558 + r425562;
double r425571 = sqrt(r425570);
double r425572 = cbrt(r425562);
double r425573 = r425571 / r425572;
double r425574 = z;
double r425575 = r425572 * r425572;
double r425576 = r425574 / r425575;
double r425577 = r425573 * r425576;
double r425578 = r425569 + r425577;
double r425579 = r425578 * r425559;
double r425580 = exp(r425579);
double r425581 = r425554 * r425580;
double r425582 = r425553 + r425581;
double r425583 = r425553 / r425582;
return r425583;
}




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.3 |
| Herbie | 2.8 |
Initial program 4.0
Simplified3.4
rmApplied add-cube-cbrt3.4
Applied *-un-lft-identity3.4
Applied sqrt-prod3.4
Applied times-frac3.4
Applied associate-*r*2.8
Simplified2.8
Final simplification2.8
herbie shell --seed 2019179
(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)))))))))))