\frac{x \cdot \left(y - z\right)}{t - z}\begin{array}{l}
\mathbf{if}\;z \le -821599116430925941436114357920196460544:\\
\;\;\;\;\frac{y - z}{t - z} \cdot x\\
\mathbf{elif}\;z \le 5.862038722875420925631635452195167558109 \cdot 10^{-249}:\\
\;\;\;\;\frac{x \cdot \left(y - z\right)}{t - z}\\
\mathbf{else}:\\
\;\;\;\;\frac{y - z}{t - z} \cdot x\\
\end{array}double f(double x, double y, double z, double t) {
double r13371988 = x;
double r13371989 = y;
double r13371990 = z;
double r13371991 = r13371989 - r13371990;
double r13371992 = r13371988 * r13371991;
double r13371993 = t;
double r13371994 = r13371993 - r13371990;
double r13371995 = r13371992 / r13371994;
return r13371995;
}
double f(double x, double y, double z, double t) {
double r13371996 = z;
double r13371997 = -8.21599116430926e+38;
bool r13371998 = r13371996 <= r13371997;
double r13371999 = y;
double r13372000 = r13371999 - r13371996;
double r13372001 = t;
double r13372002 = r13372001 - r13371996;
double r13372003 = r13372000 / r13372002;
double r13372004 = x;
double r13372005 = r13372003 * r13372004;
double r13372006 = 5.862038722875421e-249;
bool r13372007 = r13371996 <= r13372006;
double r13372008 = r13372004 * r13372000;
double r13372009 = r13372008 / r13372002;
double r13372010 = r13372007 ? r13372009 : r13372005;
double r13372011 = r13371998 ? r13372005 : r13372010;
return r13372011;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 11.7 |
|---|---|
| Target | 2.3 |
| Herbie | 2.5 |
if z < -8.21599116430926e+38 or 5.862038722875421e-249 < z Initial program 14.7
rmApplied *-un-lft-identity14.7
Applied times-frac1.3
Simplified1.3
if -8.21599116430926e+38 < z < 5.862038722875421e-249Initial program 5.1
Final simplification2.5
herbie shell --seed 2019171
(FPCore (x y z t)
:name "Graphics.Rendering.Chart.Plot.AreaSpots:renderAreaSpots4D from Chart-1.5.3"
:herbie-target
(/ x (/ (- t z) (- y z)))
(/ (* x (- y z)) (- t z)))