\frac{x \cdot \left(y - z\right)}{t - z}\begin{array}{l}
\mathbf{if}\;z \le -9.209930139418709416077035712078213691711 \lor \neg \left(z \le -5.98376643875231480812769882703216664937 \cdot 10^{-268}\right):\\
\;\;\;\;x \cdot \frac{y - z}{t - z}\\
\mathbf{else}:\\
\;\;\;\;\frac{y - z}{\frac{t - z}{x}}\\
\end{array}double f(double x, double y, double z, double t) {
double r418627 = x;
double r418628 = y;
double r418629 = z;
double r418630 = r418628 - r418629;
double r418631 = r418627 * r418630;
double r418632 = t;
double r418633 = r418632 - r418629;
double r418634 = r418631 / r418633;
return r418634;
}
double f(double x, double y, double z, double t) {
double r418635 = z;
double r418636 = -9.20993013941871;
bool r418637 = r418635 <= r418636;
double r418638 = -5.983766438752315e-268;
bool r418639 = r418635 <= r418638;
double r418640 = !r418639;
bool r418641 = r418637 || r418640;
double r418642 = x;
double r418643 = y;
double r418644 = r418643 - r418635;
double r418645 = t;
double r418646 = r418645 - r418635;
double r418647 = r418644 / r418646;
double r418648 = r418642 * r418647;
double r418649 = r418646 / r418642;
double r418650 = r418644 / r418649;
double r418651 = r418641 ? r418648 : r418650;
return r418651;
}




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.4 |
if z < -9.20993013941871 or -5.983766438752315e-268 < z Initial program 13.3
rmApplied *-un-lft-identity13.3
Applied times-frac1.7
Simplified1.7
if -9.20993013941871 < z < -5.983766438752315e-268Initial program 5.1
rmApplied clear-num5.5
rmApplied *-un-lft-identity5.5
Applied add-cube-cbrt5.5
Applied times-frac5.5
Simplified5.5
Simplified5.1
Final simplification2.4
herbie shell --seed 2019323 +o rules:numerics
(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)))