\frac{x}{x + y \cdot e^{2.0 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \left(b - c\right) \cdot \left(\left(a + \frac{5.0}{6.0}\right) - \frac{2.0}{t \cdot 3.0}\right)\right)}}\begin{array}{l}
\mathbf{if}\;x \le -5.622640931064597 \cdot 10^{-197}:\\
\;\;\;\;\frac{x}{e^{2.0 \cdot \log \left(e^{\frac{z \cdot \sqrt{t + a}}{t} - \left(a + \left(\frac{5.0}{6.0} - \frac{\frac{2.0}{t}}{3.0}\right)\right) \cdot \left(b - c\right)}\right)} \cdot y + x}\\
\mathbf{elif}\;x \le -1.4237820514682587 \cdot 10^{-289}:\\
\;\;\;\;\frac{x}{e^{2.0 \cdot \left(\left(\frac{z}{\frac{t}{\sqrt{t + a}}} - \left(b - c\right) \cdot \left(\left(a - \frac{2.0}{3.0 \cdot t}\right) + \frac{5.0}{6.0}\right)\right)\right)} \cdot y + x}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{e^{2.0 \cdot \log \left(e^{\frac{z \cdot \sqrt{t + a}}{t} - \left(a + \left(\frac{5.0}{6.0} - \frac{\frac{2.0}{t}}{3.0}\right)\right) \cdot \left(b - c\right)}\right)} \cdot y + x}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r20972541 = x;
double r20972542 = y;
double r20972543 = 2.0;
double r20972544 = z;
double r20972545 = t;
double r20972546 = a;
double r20972547 = r20972545 + r20972546;
double r20972548 = sqrt(r20972547);
double r20972549 = r20972544 * r20972548;
double r20972550 = r20972549 / r20972545;
double r20972551 = b;
double r20972552 = c;
double r20972553 = r20972551 - r20972552;
double r20972554 = 5.0;
double r20972555 = 6.0;
double r20972556 = r20972554 / r20972555;
double r20972557 = r20972546 + r20972556;
double r20972558 = 3.0;
double r20972559 = r20972545 * r20972558;
double r20972560 = r20972543 / r20972559;
double r20972561 = r20972557 - r20972560;
double r20972562 = r20972553 * r20972561;
double r20972563 = r20972550 - r20972562;
double r20972564 = r20972543 * r20972563;
double r20972565 = exp(r20972564);
double r20972566 = r20972542 * r20972565;
double r20972567 = r20972541 + r20972566;
double r20972568 = r20972541 / r20972567;
return r20972568;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r20972569 = x;
double r20972570 = -5.622640931064597e-197;
bool r20972571 = r20972569 <= r20972570;
double r20972572 = 2.0;
double r20972573 = z;
double r20972574 = t;
double r20972575 = a;
double r20972576 = r20972574 + r20972575;
double r20972577 = sqrt(r20972576);
double r20972578 = r20972573 * r20972577;
double r20972579 = r20972578 / r20972574;
double r20972580 = 5.0;
double r20972581 = 6.0;
double r20972582 = r20972580 / r20972581;
double r20972583 = r20972572 / r20972574;
double r20972584 = 3.0;
double r20972585 = r20972583 / r20972584;
double r20972586 = r20972582 - r20972585;
double r20972587 = r20972575 + r20972586;
double r20972588 = b;
double r20972589 = c;
double r20972590 = r20972588 - r20972589;
double r20972591 = r20972587 * r20972590;
double r20972592 = r20972579 - r20972591;
double r20972593 = exp(r20972592);
double r20972594 = log(r20972593);
double r20972595 = r20972572 * r20972594;
double r20972596 = exp(r20972595);
double r20972597 = y;
double r20972598 = r20972596 * r20972597;
double r20972599 = r20972598 + r20972569;
double r20972600 = r20972569 / r20972599;
double r20972601 = -1.4237820514682587e-289;
bool r20972602 = r20972569 <= r20972601;
double r20972603 = r20972574 / r20972577;
double r20972604 = r20972573 / r20972603;
double r20972605 = r20972584 * r20972574;
double r20972606 = r20972572 / r20972605;
double r20972607 = r20972575 - r20972606;
double r20972608 = r20972607 + r20972582;
double r20972609 = r20972590 * r20972608;
double r20972610 = r20972604 - r20972609;
double r20972611 = /* ERROR: no posit support in C */;
double r20972612 = /* ERROR: no posit support in C */;
double r20972613 = r20972572 * r20972612;
double r20972614 = exp(r20972613);
double r20972615 = r20972614 * r20972597;
double r20972616 = r20972615 + r20972569;
double r20972617 = r20972569 / r20972616;
double r20972618 = r20972602 ? r20972617 : r20972600;
double r20972619 = r20972571 ? r20972600 : r20972618;
return r20972619;
}




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 | 4.7 |
if x < -5.622640931064597e-197 or -1.4237820514682587e-289 < x Initial program 3.8
rmApplied add-log-exp8.5
Applied add-log-exp17.1
Applied diff-log17.1
Simplified3.8
if -5.622640931064597e-197 < x < -1.4237820514682587e-289Initial program 5.5
rmApplied add-cbrt-cube5.5
Applied add-cbrt-cube9.2
Applied cbrt-unprod9.2
Applied add-cbrt-cube9.2
Applied cbrt-undiv9.3
Simplified9.3
rmApplied insert-posit1620.1
Simplified16.1
Final simplification4.7
herbie shell --seed 2019165
(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)))))))))))