\left(x \cdot y - z \cdot y\right) \cdot t
\begin{array}{l}
\mathbf{if}\;x \cdot y - z \cdot y \le -1.1216381272031817 \cdot 10^{279}:\\
\;\;\;\;{\left(\left(t \cdot y\right) \cdot \left(x - z\right)\right)}^{1}\\
\mathbf{elif}\;x \cdot y - z \cdot y \le -2.45676478580699958 \cdot 10^{-247}:\\
\;\;\;\;\left(x \cdot y - z \cdot y\right) \cdot t\\
\mathbf{elif}\;x \cdot y - z \cdot y \le 1.88712653588383372 \cdot 10^{-270}:\\
\;\;\;\;y \cdot \left(\left(x - z\right) \cdot t\right)\\
\mathbf{elif}\;x \cdot y - z \cdot y \le 2.09756000476907307 \cdot 10^{298}:\\
\;\;\;\;\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 r531017 = x;
double r531018 = y;
double r531019 = r531017 * r531018;
double r531020 = z;
double r531021 = r531020 * r531018;
double r531022 = r531019 - r531021;
double r531023 = t;
double r531024 = r531022 * r531023;
return r531024;
}
double f(double x, double y, double z, double t) {
double r531025 = x;
double r531026 = y;
double r531027 = r531025 * r531026;
double r531028 = z;
double r531029 = r531028 * r531026;
double r531030 = r531027 - r531029;
double r531031 = -1.1216381272031817e+279;
bool r531032 = r531030 <= r531031;
double r531033 = t;
double r531034 = r531033 * r531026;
double r531035 = r531025 - r531028;
double r531036 = r531034 * r531035;
double r531037 = 1.0;
double r531038 = pow(r531036, r531037);
double r531039 = -2.4567647858069996e-247;
bool r531040 = r531030 <= r531039;
double r531041 = r531030 * r531033;
double r531042 = 1.8871265358838337e-270;
bool r531043 = r531030 <= r531042;
double r531044 = r531035 * r531033;
double r531045 = r531026 * r531044;
double r531046 = 2.097560004769073e+298;
bool r531047 = r531030 <= r531046;
double r531048 = r531047 ? r531041 : r531045;
double r531049 = r531043 ? r531045 : r531048;
double r531050 = r531040 ? r531041 : r531049;
double r531051 = r531032 ? r531038 : r531050;
return r531051;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.8 |
|---|---|
| Target | 3.0 |
| Herbie | 0.3 |
if (- (* x y) (* z y)) < -1.1216381272031817e+279Initial program 47.3
rmApplied add-cube-cbrt47.6
rmApplied pow147.6
Applied pow147.6
Applied pow147.6
Applied pow147.6
Applied pow-prod-down47.6
Applied pow-prod-down47.6
Applied pow-prod-down47.6
Simplified0.3
if -1.1216381272031817e+279 < (- (* x y) (* z y)) < -2.4567647858069996e-247 or 1.8871265358838337e-270 < (- (* x y) (* z y)) < 2.097560004769073e+298Initial program 0.2
if -2.4567647858069996e-247 < (- (* x y) (* z y)) < 1.8871265358838337e-270 or 2.097560004769073e+298 < (- (* x y) (* z y)) Initial program 30.6
rmApplied distribute-rgt-out--30.6
Applied associate-*l*0.4
Final simplification0.3
herbie shell --seed 2020046
(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))