\frac{x \cdot \left(y - z\right)}{t - z}\begin{array}{l}
\mathbf{if}\;z \le -2.54363164202423776 \cdot 10^{-164} \lor \neg \left(z \le 1.03870846195001497 \cdot 10^{-26}\right):\\
\;\;\;\;x \cdot \frac{y}{t - z} + x \cdot \left(-\frac{z}{t - z}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{x \cdot y + x \cdot \left(-z\right)}{t - z}\\
\end{array}double f(double x, double y, double z, double t) {
double r592980 = x;
double r592981 = y;
double r592982 = z;
double r592983 = r592981 - r592982;
double r592984 = r592980 * r592983;
double r592985 = t;
double r592986 = r592985 - r592982;
double r592987 = r592984 / r592986;
return r592987;
}
double f(double x, double y, double z, double t) {
double r592988 = z;
double r592989 = -2.5436316420242378e-164;
bool r592990 = r592988 <= r592989;
double r592991 = 1.038708461950015e-26;
bool r592992 = r592988 <= r592991;
double r592993 = !r592992;
bool r592994 = r592990 || r592993;
double r592995 = x;
double r592996 = y;
double r592997 = t;
double r592998 = r592997 - r592988;
double r592999 = r592996 / r592998;
double r593000 = r592995 * r592999;
double r593001 = r592988 / r592998;
double r593002 = -r593001;
double r593003 = r592995 * r593002;
double r593004 = r593000 + r593003;
double r593005 = r592995 * r592996;
double r593006 = -r592988;
double r593007 = r592995 * r593006;
double r593008 = r593005 + r593007;
double r593009 = r593008 / r592998;
double r593010 = r592994 ? r593004 : r593009;
return r593010;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 12.0 |
|---|---|
| Target | 2.2 |
| Herbie | 2.2 |
if z < -2.5436316420242378e-164 or 1.038708461950015e-26 < z Initial program 15.1
rmApplied *-un-lft-identity15.1
Applied times-frac0.6
Simplified0.6
rmApplied div-sub0.6
rmApplied sub-neg0.6
Applied distribute-lft-in0.6
if -2.5436316420242378e-164 < z < 1.038708461950015e-26Initial program 5.5
rmApplied sub-neg5.5
Applied distribute-lft-in5.5
Final simplification2.2
herbie shell --seed 2020081
(FPCore (x y z t)
:name "Graphics.Rendering.Chart.Plot.AreaSpots:renderAreaSpots4D from Chart-1.5.3"
:precision binary64
:herbie-target
(/ x (/ (- t z) (- y z)))
(/ (* x (- y z)) (- t z)))