\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;z \le -1.495517031960179583205352214012019609179 \cdot 10^{169} \lor \neg \left(z \le 1.465262131468698121202020890747560702537 \cdot 10^{155}\right):\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{x + 1}{x + \left(y \cdot z - x\right) \cdot \frac{1}{t \cdot z - x}}}\\
\end{array}double f(double x, double y, double z, double t) {
double r338726 = x;
double r338727 = y;
double r338728 = z;
double r338729 = r338727 * r338728;
double r338730 = r338729 - r338726;
double r338731 = t;
double r338732 = r338731 * r338728;
double r338733 = r338732 - r338726;
double r338734 = r338730 / r338733;
double r338735 = r338726 + r338734;
double r338736 = 1.0;
double r338737 = r338726 + r338736;
double r338738 = r338735 / r338737;
return r338738;
}
double f(double x, double y, double z, double t) {
double r338739 = z;
double r338740 = -1.4955170319601796e+169;
bool r338741 = r338739 <= r338740;
double r338742 = 1.4652621314686981e+155;
bool r338743 = r338739 <= r338742;
double r338744 = !r338743;
bool r338745 = r338741 || r338744;
double r338746 = x;
double r338747 = y;
double r338748 = t;
double r338749 = r338747 / r338748;
double r338750 = r338746 + r338749;
double r338751 = 1.0;
double r338752 = r338746 + r338751;
double r338753 = r338750 / r338752;
double r338754 = 1.0;
double r338755 = r338747 * r338739;
double r338756 = r338755 - r338746;
double r338757 = r338748 * r338739;
double r338758 = r338757 - r338746;
double r338759 = r338754 / r338758;
double r338760 = r338756 * r338759;
double r338761 = r338746 + r338760;
double r338762 = r338752 / r338761;
double r338763 = r338754 / r338762;
double r338764 = r338745 ? r338753 : r338763;
return r338764;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.4 |
|---|---|
| Target | 0.4 |
| Herbie | 3.5 |
if z < -1.4955170319601796e+169 or 1.4652621314686981e+155 < z Initial program 23.6
Taylor expanded around inf 5.9
if -1.4955170319601796e+169 < z < 1.4652621314686981e+155Initial program 2.7
rmApplied clear-num2.7
rmApplied div-inv2.8
Final simplification3.5
herbie shell --seed 2019318
(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)))