\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;z \le -1.91459443856608494 \cdot 10^{200} \lor \neg \left(z \le 8.3915759016975398 \cdot 10^{105}\right):\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \left(y \cdot z - x\right) \cdot \frac{1}{t \cdot z - x}}{x + 1}\\
\end{array}double f(double x, double y, double z, double t) {
double r765614 = x;
double r765615 = y;
double r765616 = z;
double r765617 = r765615 * r765616;
double r765618 = r765617 - r765614;
double r765619 = t;
double r765620 = r765619 * r765616;
double r765621 = r765620 - r765614;
double r765622 = r765618 / r765621;
double r765623 = r765614 + r765622;
double r765624 = 1.0;
double r765625 = r765614 + r765624;
double r765626 = r765623 / r765625;
return r765626;
}
double f(double x, double y, double z, double t) {
double r765627 = z;
double r765628 = -1.914594438566085e+200;
bool r765629 = r765627 <= r765628;
double r765630 = 8.39157590169754e+105;
bool r765631 = r765627 <= r765630;
double r765632 = !r765631;
bool r765633 = r765629 || r765632;
double r765634 = x;
double r765635 = y;
double r765636 = t;
double r765637 = r765635 / r765636;
double r765638 = r765634 + r765637;
double r765639 = 1.0;
double r765640 = r765634 + r765639;
double r765641 = r765638 / r765640;
double r765642 = r765635 * r765627;
double r765643 = r765642 - r765634;
double r765644 = 1.0;
double r765645 = r765636 * r765627;
double r765646 = r765645 - r765634;
double r765647 = r765644 / r765646;
double r765648 = r765643 * r765647;
double r765649 = r765634 + r765648;
double r765650 = r765649 / r765640;
double r765651 = r765633 ? r765641 : r765650;
return r765651;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.2 |
|---|---|
| Target | 0.4 |
| Herbie | 3.8 |
if z < -1.914594438566085e+200 or 8.39157590169754e+105 < z Initial program 21.1
Taylor expanded around inf 7.1
if -1.914594438566085e+200 < z < 8.39157590169754e+105Initial program 2.6
rmApplied div-inv2.7
Final simplification3.8
herbie shell --seed 2020027
(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)))