\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1} = -\infty:\\
\;\;\;\;\sqrt[3]{1}\\
\mathbf{elif}\;\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1} \le 5.961108853191947737319683888969508909152 \cdot 10^{-21}:\\
\;\;\;\;\frac{1}{\sqrt{x + 1}} \cdot \frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{\sqrt{x + 1}}\\
\mathbf{elif}\;\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1} \le 751958545345597:\\
\;\;\;\;\sqrt[3]{{\left(\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\right)}^{3}}\\
\mathbf{elif}\;\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1} \le 3.906429000813494708008533930580696575797 \cdot 10^{305}:\\
\;\;\;\;\frac{1}{\sqrt{x + 1}} \cdot \frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{\sqrt{x + 1}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x \cdot x - 1 \cdot 1} \cdot \left(x - 1\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r715709 = x;
double r715710 = y;
double r715711 = z;
double r715712 = r715710 * r715711;
double r715713 = r715712 - r715709;
double r715714 = t;
double r715715 = r715714 * r715711;
double r715716 = r715715 - r715709;
double r715717 = r715713 / r715716;
double r715718 = r715709 + r715717;
double r715719 = 1.0;
double r715720 = r715709 + r715719;
double r715721 = r715718 / r715720;
return r715721;
}
double f(double x, double y, double z, double t) {
double r715722 = x;
double r715723 = y;
double r715724 = z;
double r715725 = r715723 * r715724;
double r715726 = r715725 - r715722;
double r715727 = t;
double r715728 = r715727 * r715724;
double r715729 = r715728 - r715722;
double r715730 = r715726 / r715729;
double r715731 = r715722 + r715730;
double r715732 = 1.0;
double r715733 = r715722 + r715732;
double r715734 = r715731 / r715733;
double r715735 = -inf.0;
bool r715736 = r715734 <= r715735;
double r715737 = 1.0;
double r715738 = cbrt(r715737);
double r715739 = 5.961108853191948e-21;
bool r715740 = r715734 <= r715739;
double r715741 = sqrt(r715733);
double r715742 = r715737 / r715741;
double r715743 = r715731 / r715741;
double r715744 = r715742 * r715743;
double r715745 = 751958545345597.0;
bool r715746 = r715734 <= r715745;
double r715747 = 3.0;
double r715748 = pow(r715734, r715747);
double r715749 = cbrt(r715748);
double r715750 = 3.906429000813495e+305;
bool r715751 = r715734 <= r715750;
double r715752 = r715723 / r715727;
double r715753 = r715722 + r715752;
double r715754 = r715722 * r715722;
double r715755 = r715732 * r715732;
double r715756 = r715754 - r715755;
double r715757 = r715753 / r715756;
double r715758 = r715722 - r715732;
double r715759 = r715757 * r715758;
double r715760 = r715751 ? r715744 : r715759;
double r715761 = r715746 ? r715749 : r715760;
double r715762 = r715740 ? r715744 : r715761;
double r715763 = r715736 ? r715738 : r715762;
return r715763;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.5 |
|---|---|
| Target | 0.3 |
| Herbie | 4.7 |
if (/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1.0)) < -inf.0Initial program 64.0
rmApplied add-cbrt-cube64.0
Applied add-cbrt-cube64.0
Applied cbrt-undiv64.0
Simplified64.0
Taylor expanded around inf 44.5
if -inf.0 < (/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1.0)) < 5.961108853191948e-21 or 751958545345597.0 < (/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1.0)) < 3.906429000813495e+305Initial program 1.6
rmApplied add-sqr-sqrt3.7
Applied *-un-lft-identity3.7
Applied times-frac3.7
if 5.961108853191948e-21 < (/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1.0)) < 751958545345597.0Initial program 0.0
rmApplied add-cbrt-cube34.9
Applied add-cbrt-cube35.9
Applied cbrt-undiv35.9
Simplified0.0
if 3.906429000813495e+305 < (/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1.0)) Initial program 63.6
Taylor expanded around inf 10.5
rmApplied flip-+23.9
Applied associate-/r/23.9
Final simplification4.7
herbie shell --seed 2019354
(FPCore (x y z t)
:name "Diagrams.Trail:splitAtParam from diagrams-lib-1.3.0.3, A"
:precision binary64
:herbie-target
(/ (+ x (- (/ y (- t (/ x z))) (/ x (- (* t z) x)))) (+ x 1))
(/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1)))