\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^{2 \cdot \left(\frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}double f(double x, double y, double z, double t, double a, double b, double c) {
double r316543 = x;
double r316544 = y;
double r316545 = 2.0;
double r316546 = z;
double r316547 = t;
double r316548 = a;
double r316549 = r316547 + r316548;
double r316550 = sqrt(r316549);
double r316551 = r316546 * r316550;
double r316552 = r316551 / r316547;
double r316553 = b;
double r316554 = c;
double r316555 = r316553 - r316554;
double r316556 = 5.0;
double r316557 = 6.0;
double r316558 = r316556 / r316557;
double r316559 = r316548 + r316558;
double r316560 = 3.0;
double r316561 = r316547 * r316560;
double r316562 = r316545 / r316561;
double r316563 = r316559 - r316562;
double r316564 = r316555 * r316563;
double r316565 = r316552 - r316564;
double r316566 = r316545 * r316565;
double r316567 = exp(r316566);
double r316568 = r316544 * r316567;
double r316569 = r316543 + r316568;
double r316570 = r316543 / r316569;
return r316570;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r316571 = x;
double r316572 = y;
double r316573 = 2.0;
double r316574 = z;
double r316575 = t;
double r316576 = cbrt(r316575);
double r316577 = r316576 * r316576;
double r316578 = r316574 / r316577;
double r316579 = a;
double r316580 = r316575 + r316579;
double r316581 = sqrt(r316580);
double r316582 = r316581 / r316576;
double r316583 = r316578 * r316582;
double r316584 = b;
double r316585 = c;
double r316586 = r316584 - r316585;
double r316587 = 5.0;
double r316588 = 6.0;
double r316589 = r316587 / r316588;
double r316590 = r316579 + r316589;
double r316591 = 3.0;
double r316592 = r316575 * r316591;
double r316593 = r316573 / r316592;
double r316594 = r316590 - r316593;
double r316595 = r316586 * r316594;
double r316596 = r316583 - r316595;
double r316597 = r316573 * r316596;
double r316598 = exp(r316597);
double r316599 = r316572 * r316598;
double r316600 = r316571 + r316599;
double r316601 = r316571 / r316600;
return r316601;
}




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.1 |
|---|---|
| Target | 3.0 |
| Herbie | 2.9 |
Initial program 4.1
rmApplied add-cube-cbrt4.1
Applied times-frac2.9
Final simplification2.9
herbie shell --seed 2019325
(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)))))))))))