\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 r463363 = x;
double r463364 = y;
double r463365 = z;
double r463366 = r463364 - r463365;
double r463367 = r463363 * r463366;
double r463368 = t;
double r463369 = r463368 - r463365;
double r463370 = r463367 / r463369;
return r463370;
}
double f(double x, double y, double z, double t) {
double r463371 = z;
double r463372 = -9.20993013941871;
bool r463373 = r463371 <= r463372;
double r463374 = -5.983766438752315e-268;
bool r463375 = r463371 <= r463374;
double r463376 = !r463375;
bool r463377 = r463373 || r463376;
double r463378 = x;
double r463379 = y;
double r463380 = r463379 - r463371;
double r463381 = t;
double r463382 = r463381 - r463371;
double r463383 = r463380 / r463382;
double r463384 = r463378 * r463383;
double r463385 = r463382 / r463378;
double r463386 = r463380 / r463385;
double r463387 = r463377 ? r463384 : r463386;
return r463387;
}




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)))