\frac{x \cdot \left(y - z\right)}{t - z}\begin{array}{l}
\mathbf{if}\;z \le -9.5127373023801481 \cdot 10^{-222} \lor \neg \left(z \le 5.43817376472661147 \cdot 10^{-107}\right):\\
\;\;\;\;x \cdot \frac{y - z}{t - z}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{t - z} \cdot \left(y - z\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r750554 = x;
double r750555 = y;
double r750556 = z;
double r750557 = r750555 - r750556;
double r750558 = r750554 * r750557;
double r750559 = t;
double r750560 = r750559 - r750556;
double r750561 = r750558 / r750560;
return r750561;
}
double f(double x, double y, double z, double t) {
double r750562 = z;
double r750563 = -9.512737302380148e-222;
bool r750564 = r750562 <= r750563;
double r750565 = 5.4381737647266115e-107;
bool r750566 = r750562 <= r750565;
double r750567 = !r750566;
bool r750568 = r750564 || r750567;
double r750569 = x;
double r750570 = y;
double r750571 = r750570 - r750562;
double r750572 = t;
double r750573 = r750572 - r750562;
double r750574 = r750571 / r750573;
double r750575 = r750569 * r750574;
double r750576 = r750569 / r750573;
double r750577 = r750576 * r750571;
double r750578 = r750568 ? r750575 : r750577;
return r750578;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 11.9 |
|---|---|
| Target | 2.2 |
| Herbie | 2.4 |
if z < -9.512737302380148e-222 or 5.4381737647266115e-107 < z Initial program 13.3
rmApplied *-un-lft-identity13.3
Applied times-frac1.2
Simplified1.2
if -9.512737302380148e-222 < z < 5.4381737647266115e-107Initial program 6.7
rmApplied *-un-lft-identity6.7
Applied times-frac5.5
Simplified5.5
rmApplied pow15.5
Applied pow15.5
Applied pow-prod-down5.5
Simplified6.9
Final simplification2.4
herbie shell --seed 2020047
(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)))