\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;z \le -7.150582175885458915277202527443364197416 \cdot 10^{54} \lor \neg \left(z \le 6.043915376694697440989411808244092375242 \cdot 10^{86}\right):\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{1}{\frac{t \cdot z - x}{y \cdot z - x}}}{x + 1}\\
\end{array}double f(double x, double y, double z, double t) {
double r457568 = x;
double r457569 = y;
double r457570 = z;
double r457571 = r457569 * r457570;
double r457572 = r457571 - r457568;
double r457573 = t;
double r457574 = r457573 * r457570;
double r457575 = r457574 - r457568;
double r457576 = r457572 / r457575;
double r457577 = r457568 + r457576;
double r457578 = 1.0;
double r457579 = r457568 + r457578;
double r457580 = r457577 / r457579;
return r457580;
}
double f(double x, double y, double z, double t) {
double r457581 = z;
double r457582 = -7.150582175885459e+54;
bool r457583 = r457581 <= r457582;
double r457584 = 6.043915376694697e+86;
bool r457585 = r457581 <= r457584;
double r457586 = !r457585;
bool r457587 = r457583 || r457586;
double r457588 = x;
double r457589 = y;
double r457590 = t;
double r457591 = r457589 / r457590;
double r457592 = r457588 + r457591;
double r457593 = 1.0;
double r457594 = r457588 + r457593;
double r457595 = r457592 / r457594;
double r457596 = 1.0;
double r457597 = r457590 * r457581;
double r457598 = r457597 - r457588;
double r457599 = r457589 * r457581;
double r457600 = r457599 - r457588;
double r457601 = r457598 / r457600;
double r457602 = r457596 / r457601;
double r457603 = r457588 + r457602;
double r457604 = r457603 / r457594;
double r457605 = r457587 ? r457595 : r457604;
return r457605;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.2 |
|---|---|
| Target | 0.3 |
| Herbie | 3.4 |
if z < -7.150582175885459e+54 or 6.043915376694697e+86 < z Initial program 18.2
Taylor expanded around inf 7.8
if -7.150582175885459e+54 < z < 6.043915376694697e+86Initial program 0.7
rmApplied clear-num0.8
Final simplification3.4
herbie shell --seed 2019326
(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)))