\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 \sqrt[3]{{\left(\mathsf{fma}\left(-\left(b - c\right), \left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}, \frac{z \cdot \sqrt{t + a}}{t}\right)\right)}^{3}}}}double f(double x, double y, double z, double t, double a, double b, double c) {
double r359598 = x;
double r359599 = y;
double r359600 = 2.0;
double r359601 = z;
double r359602 = t;
double r359603 = a;
double r359604 = r359602 + r359603;
double r359605 = sqrt(r359604);
double r359606 = r359601 * r359605;
double r359607 = r359606 / r359602;
double r359608 = b;
double r359609 = c;
double r359610 = r359608 - r359609;
double r359611 = 5.0;
double r359612 = 6.0;
double r359613 = r359611 / r359612;
double r359614 = r359603 + r359613;
double r359615 = 3.0;
double r359616 = r359602 * r359615;
double r359617 = r359600 / r359616;
double r359618 = r359614 - r359617;
double r359619 = r359610 * r359618;
double r359620 = r359607 - r359619;
double r359621 = r359600 * r359620;
double r359622 = exp(r359621);
double r359623 = r359599 * r359622;
double r359624 = r359598 + r359623;
double r359625 = r359598 / r359624;
return r359625;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r359626 = x;
double r359627 = y;
double r359628 = 2.0;
double r359629 = b;
double r359630 = c;
double r359631 = r359629 - r359630;
double r359632 = -r359631;
double r359633 = a;
double r359634 = 5.0;
double r359635 = 6.0;
double r359636 = r359634 / r359635;
double r359637 = r359633 + r359636;
double r359638 = t;
double r359639 = 3.0;
double r359640 = r359638 * r359639;
double r359641 = r359628 / r359640;
double r359642 = r359637 - r359641;
double r359643 = z;
double r359644 = r359638 + r359633;
double r359645 = sqrt(r359644);
double r359646 = r359643 * r359645;
double r359647 = r359646 / r359638;
double r359648 = fma(r359632, r359642, r359647);
double r359649 = 3.0;
double r359650 = pow(r359648, r359649);
double r359651 = cbrt(r359650);
double r359652 = r359628 * r359651;
double r359653 = exp(r359652);
double r359654 = r359627 * r359653;
double r359655 = r359626 + r359654;
double r359656 = r359626 / r359655;
return r359656;
}




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.9 |
|---|---|
| Target | 3.1 |
| Herbie | 2.6 |
Initial program 3.9
rmApplied add-cbrt-cube3.9
Applied add-cbrt-cube7.0
Applied cbrt-unprod7.0
Applied add-cbrt-cube7.0
Applied cbrt-undiv7.1
Simplified7.1
rmApplied add-cube-cbrt7.1
Applied times-frac5.9
Applied fma-neg5.2
Simplified1.9
rmApplied add-cbrt-cube1.9
Simplified2.6
Final simplification2.6
herbie shell --seed 2019353 +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)))))))))))