\frac{x \cdot \left(y - z\right)}{t - z}\begin{array}{l}
\mathbf{if}\;\frac{x \cdot \left(y - z\right)}{t - z} \le -3.38115760978392342 \cdot 10^{253} \lor \neg \left(\frac{x \cdot \left(y - z\right)}{t - z} \le -3.3290513729027525 \cdot 10^{-272} \lor \neg \left(\frac{x \cdot \left(y - z\right)}{t - z} \le 3.7548645609617997 \cdot 10^{-176} \lor \neg \left(\frac{x \cdot \left(y - z\right)}{t - z} \le 1.5701424637407852 \cdot 10^{181}\right)\right)\right):\\
\;\;\;\;x \cdot \frac{y - z}{t - z}\\
\mathbf{else}:\\
\;\;\;\;\frac{x \cdot \left(y - z\right)}{t - z}\\
\end{array}double f(double x, double y, double z, double t) {
double r578564 = x;
double r578565 = y;
double r578566 = z;
double r578567 = r578565 - r578566;
double r578568 = r578564 * r578567;
double r578569 = t;
double r578570 = r578569 - r578566;
double r578571 = r578568 / r578570;
return r578571;
}
double f(double x, double y, double z, double t) {
double r578572 = x;
double r578573 = y;
double r578574 = z;
double r578575 = r578573 - r578574;
double r578576 = r578572 * r578575;
double r578577 = t;
double r578578 = r578577 - r578574;
double r578579 = r578576 / r578578;
double r578580 = -3.3811576097839234e+253;
bool r578581 = r578579 <= r578580;
double r578582 = -3.3290513729027525e-272;
bool r578583 = r578579 <= r578582;
double r578584 = 3.7548645609618e-176;
bool r578585 = r578579 <= r578584;
double r578586 = 1.5701424637407852e+181;
bool r578587 = r578579 <= r578586;
double r578588 = !r578587;
bool r578589 = r578585 || r578588;
double r578590 = !r578589;
bool r578591 = r578583 || r578590;
double r578592 = !r578591;
bool r578593 = r578581 || r578592;
double r578594 = r578575 / r578578;
double r578595 = r578572 * r578594;
double r578596 = r578593 ? r578595 : r578579;
return r578596;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 11.6 |
|---|---|
| Target | 2.1 |
| Herbie | 1.0 |
if (/ (* x (- y z)) (- t z)) < -3.3811576097839234e+253 or -3.3290513729027525e-272 < (/ (* x (- y z)) (- t z)) < 3.7548645609618e-176 or 1.5701424637407852e+181 < (/ (* x (- y z)) (- t z)) Initial program 27.0
rmApplied *-un-lft-identity27.0
Applied times-frac1.8
Simplified1.8
if -3.3811576097839234e+253 < (/ (* x (- y z)) (- t z)) < -3.3290513729027525e-272 or 3.7548645609618e-176 < (/ (* x (- y z)) (- t z)) < 1.5701424637407852e+181Initial program 0.3
rmApplied *-un-lft-identity0.3
Applied times-frac2.2
Simplified2.2
rmApplied associate-*r/0.3
Final simplification1.0
herbie shell --seed 2020089 +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)))