\left(x \cdot y - z \cdot y\right) \cdot t
\begin{array}{l}
\mathbf{if}\;x \cdot y - z \cdot y = -\infty:\\
\;\;\;\;y \cdot \left(\left(x - z\right) \cdot t\right)\\
\mathbf{elif}\;x \cdot y - z \cdot y \le -2.21225276859487071 \cdot 10^{-192}:\\
\;\;\;\;\left(x \cdot y - z \cdot y\right) \cdot t\\
\mathbf{elif}\;x \cdot y - z \cdot y \le -0.0:\\
\;\;\;\;1 \cdot \left(\left(t \cdot y\right) \cdot \left(x - z\right)\right)\\
\mathbf{elif}\;x \cdot y - z \cdot y \le 8.14764716923265975 \cdot 10^{228}:\\
\;\;\;\;\left(x \cdot y - z \cdot y\right) \cdot t\\
\mathbf{else}:\\
\;\;\;\;y \cdot \left(\left(x - z\right) \cdot t\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r593347 = x;
double r593348 = y;
double r593349 = r593347 * r593348;
double r593350 = z;
double r593351 = r593350 * r593348;
double r593352 = r593349 - r593351;
double r593353 = t;
double r593354 = r593352 * r593353;
return r593354;
}
double f(double x, double y, double z, double t) {
double r593355 = x;
double r593356 = y;
double r593357 = r593355 * r593356;
double r593358 = z;
double r593359 = r593358 * r593356;
double r593360 = r593357 - r593359;
double r593361 = -inf.0;
bool r593362 = r593360 <= r593361;
double r593363 = r593355 - r593358;
double r593364 = t;
double r593365 = r593363 * r593364;
double r593366 = r593356 * r593365;
double r593367 = -2.2122527685948707e-192;
bool r593368 = r593360 <= r593367;
double r593369 = r593360 * r593364;
double r593370 = -0.0;
bool r593371 = r593360 <= r593370;
double r593372 = 1.0;
double r593373 = r593364 * r593356;
double r593374 = r593373 * r593363;
double r593375 = r593372 * r593374;
double r593376 = 8.14764716923266e+228;
bool r593377 = r593360 <= r593376;
double r593378 = r593377 ? r593369 : r593366;
double r593379 = r593371 ? r593375 : r593378;
double r593380 = r593368 ? r593369 : r593379;
double r593381 = r593362 ? r593366 : r593380;
return r593381;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.2 |
|---|---|
| Target | 2.9 |
| Herbie | 0.3 |
if (- (* x y) (* z y)) < -inf.0 or 8.14764716923266e+228 < (- (* x y) (* z y)) Initial program 45.7
rmApplied distribute-rgt-out--45.7
Applied associate-*l*0.4
if -inf.0 < (- (* x y) (* z y)) < -2.2122527685948707e-192 or -0.0 < (- (* x y) (* z y)) < 8.14764716923266e+228Initial program 1.2
if -2.2122527685948707e-192 < (- (* x y) (* z y)) < -0.0Initial program 5.4
rmApplied *-un-lft-identity5.4
Applied associate-*l*5.4
Simplified0.7
Final simplification0.3
herbie shell --seed 2020021 +o rules:numerics
(FPCore (x y z t)
:name "Linear.Projection:inverseInfinitePerspective from linear-1.19.1.3"
:precision binary64
:herbie-target
(if (< t -9.231879582886777e-80) (* (* y t) (- x z)) (if (< t 2.543067051564877e+83) (* y (* t (- x z))) (* (* y (- x z)) t)))
(* (- (* x y) (* z y)) t))