\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1.0}\begin{array}{l}
\mathbf{if}\;z \le -1.705982485713477 \cdot 10^{+79}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1.0}\\
\mathbf{elif}\;z \le 2.2939420975234537 \cdot 10^{+108}:\\
\;\;\;\;\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1.0}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1.0}\\
\end{array}double f(double x, double y, double z, double t) {
double r28466783 = x;
double r28466784 = y;
double r28466785 = z;
double r28466786 = r28466784 * r28466785;
double r28466787 = r28466786 - r28466783;
double r28466788 = t;
double r28466789 = r28466788 * r28466785;
double r28466790 = r28466789 - r28466783;
double r28466791 = r28466787 / r28466790;
double r28466792 = r28466783 + r28466791;
double r28466793 = 1.0;
double r28466794 = r28466783 + r28466793;
double r28466795 = r28466792 / r28466794;
return r28466795;
}
double f(double x, double y, double z, double t) {
double r28466796 = z;
double r28466797 = -1.705982485713477e+79;
bool r28466798 = r28466796 <= r28466797;
double r28466799 = x;
double r28466800 = y;
double r28466801 = t;
double r28466802 = r28466800 / r28466801;
double r28466803 = r28466799 + r28466802;
double r28466804 = 1.0;
double r28466805 = r28466799 + r28466804;
double r28466806 = r28466803 / r28466805;
double r28466807 = 2.2939420975234537e+108;
bool r28466808 = r28466796 <= r28466807;
double r28466809 = r28466800 * r28466796;
double r28466810 = r28466809 - r28466799;
double r28466811 = r28466801 * r28466796;
double r28466812 = r28466811 - r28466799;
double r28466813 = r28466810 / r28466812;
double r28466814 = r28466799 + r28466813;
double r28466815 = r28466814 / r28466805;
double r28466816 = r28466808 ? r28466815 : r28466806;
double r28466817 = r28466798 ? r28466806 : r28466816;
return r28466817;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.8 |
|---|---|
| Target | 0.4 |
| Herbie | 3.4 |
if z < -1.705982485713477e+79 or 2.2939420975234537e+108 < z Initial program 18.5
Taylor expanded around inf 8.1
if -1.705982485713477e+79 < z < 2.2939420975234537e+108Initial program 1.0
Taylor expanded around 0 1.0
Final simplification3.4
herbie shell --seed 2019164 +o rules:numerics
(FPCore (x y z t)
:name "Diagrams.Trail:splitAtParam from diagrams-lib-1.3.0.3, A"
:herbie-target
(/ (+ x (- (/ y (- t (/ x z))) (/ x (- (* t z) x)))) (+ x 1.0))
(/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1.0)))