\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;z \le -4.114609088417829740656345957882149152422 \cdot 10^{81} \lor \neg \left(z \le 1.517947538902801456719293148722147490949 \cdot 10^{62}\right):\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{x + 1}{x + \frac{y \cdot z - x}{t \cdot z - x}}}\\
\end{array}double f(double x, double y, double z, double t) {
double r444654 = x;
double r444655 = y;
double r444656 = z;
double r444657 = r444655 * r444656;
double r444658 = r444657 - r444654;
double r444659 = t;
double r444660 = r444659 * r444656;
double r444661 = r444660 - r444654;
double r444662 = r444658 / r444661;
double r444663 = r444654 + r444662;
double r444664 = 1.0;
double r444665 = r444654 + r444664;
double r444666 = r444663 / r444665;
return r444666;
}
double f(double x, double y, double z, double t) {
double r444667 = z;
double r444668 = -4.11460908841783e+81;
bool r444669 = r444667 <= r444668;
double r444670 = 1.5179475389028015e+62;
bool r444671 = r444667 <= r444670;
double r444672 = !r444671;
bool r444673 = r444669 || r444672;
double r444674 = x;
double r444675 = y;
double r444676 = t;
double r444677 = r444675 / r444676;
double r444678 = r444674 + r444677;
double r444679 = 1.0;
double r444680 = r444674 + r444679;
double r444681 = r444678 / r444680;
double r444682 = 1.0;
double r444683 = r444675 * r444667;
double r444684 = r444683 - r444674;
double r444685 = r444676 * r444667;
double r444686 = r444685 - r444674;
double r444687 = r444684 / r444686;
double r444688 = r444674 + r444687;
double r444689 = r444680 / r444688;
double r444690 = r444682 / r444689;
double r444691 = r444673 ? r444681 : r444690;
return r444691;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.5 |
|---|---|
| Target | 0.3 |
| Herbie | 3.5 |
if z < -4.11460908841783e+81 or 1.5179475389028015e+62 < z Initial program 18.9
Taylor expanded around inf 8.1
if -4.11460908841783e+81 < z < 1.5179475389028015e+62Initial program 0.7
rmApplied clear-num0.7
Final simplification3.5
herbie shell --seed 2019291
(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)))