\frac{x \cdot \left(y - z\right)}{t - z}\begin{array}{l}
\mathbf{if}\;z \le -2.155924047883603900871162775757218637321 \cdot 10^{-263}:\\
\;\;\;\;x \cdot \frac{y - z}{t - z}\\
\mathbf{elif}\;z \le 8.757644994032034378013442251697187719343 \cdot 10^{-217}:\\
\;\;\;\;\left(\left(y - z\right) \cdot x\right) \cdot \frac{1}{t - z}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{\frac{t - z}{y - z}}\\
\end{array}double f(double x, double y, double z, double t) {
double r591599 = x;
double r591600 = y;
double r591601 = z;
double r591602 = r591600 - r591601;
double r591603 = r591599 * r591602;
double r591604 = t;
double r591605 = r591604 - r591601;
double r591606 = r591603 / r591605;
return r591606;
}
double f(double x, double y, double z, double t) {
double r591607 = z;
double r591608 = -2.155924047883604e-263;
bool r591609 = r591607 <= r591608;
double r591610 = x;
double r591611 = y;
double r591612 = r591611 - r591607;
double r591613 = t;
double r591614 = r591613 - r591607;
double r591615 = r591612 / r591614;
double r591616 = r591610 * r591615;
double r591617 = 8.757644994032034e-217;
bool r591618 = r591607 <= r591617;
double r591619 = r591612 * r591610;
double r591620 = 1.0;
double r591621 = r591620 / r591614;
double r591622 = r591619 * r591621;
double r591623 = r591614 / r591612;
double r591624 = r591610 / r591623;
double r591625 = r591618 ? r591622 : r591624;
double r591626 = r591609 ? r591616 : r591625;
return r591626;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 12.1 |
|---|---|
| Target | 2.2 |
| Herbie | 2.3 |
if z < -2.155924047883604e-263Initial program 12.6
rmApplied *-un-lft-identity12.6
Applied times-frac1.9
Simplified1.9
if -2.155924047883604e-263 < z < 8.757644994032034e-217Initial program 7.4
rmApplied *-un-lft-identity7.4
Applied times-frac6.6
Simplified6.6
rmApplied div-inv6.7
Applied associate-*r*7.4
Simplified7.4
if 8.757644994032034e-217 < z Initial program 12.6
rmApplied associate-/l*1.6
Final simplification2.3
herbie shell --seed 2019305 +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)))