\frac{x \cdot \left(y - z\right)}{t - z}\begin{array}{l}
\mathbf{if}\;z \le -5.832238401212370880087950472681264095707 \cdot 10^{-71}:\\
\;\;\;\;\frac{y - z}{t - z} \cdot x\\
\mathbf{elif}\;z \le 1.007416324504119360658702594253396750138 \cdot 10^{-308}:\\
\;\;\;\;\frac{z \cdot \left(-x\right) + x \cdot y}{t - z}\\
\mathbf{else}:\\
\;\;\;\;\frac{y - z}{t - z} \cdot x\\
\end{array}double f(double x, double y, double z, double t) {
double r28761867 = x;
double r28761868 = y;
double r28761869 = z;
double r28761870 = r28761868 - r28761869;
double r28761871 = r28761867 * r28761870;
double r28761872 = t;
double r28761873 = r28761872 - r28761869;
double r28761874 = r28761871 / r28761873;
return r28761874;
}
double f(double x, double y, double z, double t) {
double r28761875 = z;
double r28761876 = -5.832238401212371e-71;
bool r28761877 = r28761875 <= r28761876;
double r28761878 = y;
double r28761879 = r28761878 - r28761875;
double r28761880 = t;
double r28761881 = r28761880 - r28761875;
double r28761882 = r28761879 / r28761881;
double r28761883 = x;
double r28761884 = r28761882 * r28761883;
double r28761885 = 1.0074163245041194e-308;
bool r28761886 = r28761875 <= r28761885;
double r28761887 = -r28761883;
double r28761888 = r28761875 * r28761887;
double r28761889 = r28761883 * r28761878;
double r28761890 = r28761888 + r28761889;
double r28761891 = r28761890 / r28761881;
double r28761892 = r28761886 ? r28761891 : r28761884;
double r28761893 = r28761877 ? r28761884 : r28761892;
return r28761893;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 11.9 |
|---|---|
| Target | 2.0 |
| Herbie | 2.2 |
if z < -5.832238401212371e-71 or 1.0074163245041194e-308 < z Initial program 13.2
rmApplied *-un-lft-identity13.2
Applied times-frac1.5
Simplified1.5
if -5.832238401212371e-71 < z < 1.0074163245041194e-308Initial program 5.8
rmApplied sub-neg5.8
Applied distribute-rgt-in5.8
Final simplification2.2
herbie shell --seed 2019192
(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)))