\left(x \cdot y - z \cdot y\right) \cdot t
\begin{array}{l}
\mathbf{if}\;x \cdot y - z \cdot y = -\infty:\\
\;\;\;\;\left(t \cdot y\right) \cdot \left(x - z\right)\\
\mathbf{elif}\;x \cdot y - z \cdot y \le -8.141433816661043326794834783742908825251 \cdot 10^{-88}:\\
\;\;\;\;t \cdot \left(x \cdot y - z \cdot y\right)\\
\mathbf{elif}\;x \cdot y - z \cdot y \le 9.861951895025929519173533740985910928173 \cdot 10^{-271}:\\
\;\;\;\;\left(t \cdot y\right) \cdot \left(x - z\right)\\
\mathbf{elif}\;x \cdot y - z \cdot y \le 8.499894008736670624619359618410855566379 \cdot 10^{292}:\\
\;\;\;\;t \cdot \left(x \cdot y - z \cdot y\right)\\
\mathbf{else}:\\
\;\;\;\;\left(t \cdot \left(x - z\right)\right) \cdot y\\
\end{array}double f(double x, double y, double z, double t) {
double r435637 = x;
double r435638 = y;
double r435639 = r435637 * r435638;
double r435640 = z;
double r435641 = r435640 * r435638;
double r435642 = r435639 - r435641;
double r435643 = t;
double r435644 = r435642 * r435643;
return r435644;
}
double f(double x, double y, double z, double t) {
double r435645 = x;
double r435646 = y;
double r435647 = r435645 * r435646;
double r435648 = z;
double r435649 = r435648 * r435646;
double r435650 = r435647 - r435649;
double r435651 = -inf.0;
bool r435652 = r435650 <= r435651;
double r435653 = t;
double r435654 = r435653 * r435646;
double r435655 = r435645 - r435648;
double r435656 = r435654 * r435655;
double r435657 = -8.141433816661043e-88;
bool r435658 = r435650 <= r435657;
double r435659 = r435653 * r435650;
double r435660 = 9.86195189502593e-271;
bool r435661 = r435650 <= r435660;
double r435662 = 8.49989400873667e+292;
bool r435663 = r435650 <= r435662;
double r435664 = r435653 * r435655;
double r435665 = r435664 * r435646;
double r435666 = r435663 ? r435659 : r435665;
double r435667 = r435661 ? r435656 : r435666;
double r435668 = r435658 ? r435659 : r435667;
double r435669 = r435652 ? r435656 : r435668;
return r435669;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.0 |
|---|---|
| Target | 3.0 |
| Herbie | 0.7 |
if (- (* x y) (* z y)) < -inf.0 or -8.141433816661043e-88 < (- (* x y) (* z y)) < 9.86195189502593e-271Initial program 16.8
Taylor expanded around inf 16.8
Simplified2.3
if -inf.0 < (- (* x y) (* z y)) < -8.141433816661043e-88 or 9.86195189502593e-271 < (- (* x y) (* z y)) < 8.49989400873667e+292Initial program 0.2
if 8.49989400873667e+292 < (- (* x y) (* z y)) Initial program 58.5
rmApplied distribute-rgt-out--58.5
Applied associate-*l*0.3
Final simplification0.7
herbie shell --seed 2019195
(FPCore (x y z t)
:name "Linear.Projection:inverseInfinitePerspective from linear-1.19.1.3"
: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))