\frac{x \cdot \left(y - z\right)}{t - z}\begin{array}{l}
\mathbf{if}\;x \le -5.089780698062090774608904448505777443405 \cdot 10^{-199} \lor \neg \left(x \le 118151073605098128543842304\right):\\
\;\;\;\;\frac{x}{\frac{t - z}{y - z}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{t - z} \cdot \left(x \cdot \left(y - z\right)\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r386013 = x;
double r386014 = y;
double r386015 = z;
double r386016 = r386014 - r386015;
double r386017 = r386013 * r386016;
double r386018 = t;
double r386019 = r386018 - r386015;
double r386020 = r386017 / r386019;
return r386020;
}
double f(double x, double y, double z, double t) {
double r386021 = x;
double r386022 = -5.089780698062091e-199;
bool r386023 = r386021 <= r386022;
double r386024 = 1.1815107360509813e+26;
bool r386025 = r386021 <= r386024;
double r386026 = !r386025;
bool r386027 = r386023 || r386026;
double r386028 = t;
double r386029 = z;
double r386030 = r386028 - r386029;
double r386031 = y;
double r386032 = r386031 - r386029;
double r386033 = r386030 / r386032;
double r386034 = r386021 / r386033;
double r386035 = 1.0;
double r386036 = r386035 / r386030;
double r386037 = r386021 * r386032;
double r386038 = r386036 * r386037;
double r386039 = r386027 ? r386034 : r386038;
return r386039;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 11.6 |
|---|---|
| Target | 2.2 |
| Herbie | 2.1 |
if x < -5.089780698062091e-199 or 1.1815107360509813e+26 < x Initial program 17.7
rmApplied associate-/l*2.1
if -5.089780698062091e-199 < x < 1.1815107360509813e+26Initial program 2.0
rmApplied clear-num2.4
rmApplied div-inv2.8
Applied add-cube-cbrt2.8
Applied times-frac2.5
Simplified2.5
Simplified2.1
Final simplification2.1
herbie shell --seed 2019323
(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)))