\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;z \le -2.669558449301389365130158102652756647247 \cdot 10^{171} \lor \neg \left(z \le 2315632523410916948049920\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 r865666 = x;
double r865667 = y;
double r865668 = z;
double r865669 = r865667 * r865668;
double r865670 = r865669 - r865666;
double r865671 = t;
double r865672 = r865671 * r865668;
double r865673 = r865672 - r865666;
double r865674 = r865670 / r865673;
double r865675 = r865666 + r865674;
double r865676 = 1.0;
double r865677 = r865666 + r865676;
double r865678 = r865675 / r865677;
return r865678;
}
double f(double x, double y, double z, double t) {
double r865679 = z;
double r865680 = -2.6695584493013894e+171;
bool r865681 = r865679 <= r865680;
double r865682 = 2.315632523410917e+24;
bool r865683 = r865679 <= r865682;
double r865684 = !r865683;
bool r865685 = r865681 || r865684;
double r865686 = x;
double r865687 = y;
double r865688 = t;
double r865689 = r865687 / r865688;
double r865690 = r865686 + r865689;
double r865691 = 1.0;
double r865692 = r865686 + r865691;
double r865693 = r865690 / r865692;
double r865694 = 1.0;
double r865695 = r865688 * r865679;
double r865696 = r865695 - r865686;
double r865697 = r865687 * r865679;
double r865698 = r865697 - r865686;
double r865699 = r865696 / r865698;
double r865700 = r865694 / r865699;
double r865701 = r865686 + r865700;
double r865702 = r865701 / r865692;
double r865703 = r865685 ? r865693 : r865702;
return r865703;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.1 |
|---|---|
| Target | 0.3 |
| Herbie | 3.8 |
if z < -2.6695584493013894e+171 or 2.315632523410917e+24 < z Initial program 18.2
Taylor expanded around inf 8.2
if -2.6695584493013894e+171 < z < 2.315632523410917e+24Initial program 1.7
rmApplied clear-num1.8
Final simplification3.8
herbie shell --seed 2019362
(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)))