\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 r399460 = x;
double r399461 = y;
double r399462 = z;
double r399463 = r399461 - r399462;
double r399464 = r399460 * r399463;
double r399465 = t;
double r399466 = r399465 - r399462;
double r399467 = r399464 / r399466;
return r399467;
}
double f(double x, double y, double z, double t) {
double r399468 = x;
double r399469 = -5.089780698062091e-199;
bool r399470 = r399468 <= r399469;
double r399471 = 1.1815107360509813e+26;
bool r399472 = r399468 <= r399471;
double r399473 = !r399472;
bool r399474 = r399470 || r399473;
double r399475 = t;
double r399476 = z;
double r399477 = r399475 - r399476;
double r399478 = y;
double r399479 = r399478 - r399476;
double r399480 = r399477 / r399479;
double r399481 = r399468 / r399480;
double r399482 = 1.0;
double r399483 = r399482 / r399477;
double r399484 = r399468 * r399479;
double r399485 = r399483 * r399484;
double r399486 = r399474 ? r399481 : r399485;
return r399486;
}




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