\left(x \cdot y - z \cdot y\right) \cdot t
\begin{array}{l}
\mathbf{if}\;x \cdot y - z \cdot y \le -1.2464801089300593 \cdot 10^{269}:\\
\;\;\;\;{\left(\left(t \cdot y\right) \cdot \left(x - z\right)\right)}^{1}\\
\mathbf{elif}\;x \cdot y - z \cdot y \le -2.13568086354090478 \cdot 10^{-295}:\\
\;\;\;\;\left(x \cdot y - z \cdot y\right) \cdot t\\
\mathbf{elif}\;x \cdot y - z \cdot y \le 1.9498152 \cdot 10^{-318}:\\
\;\;\;\;{\left(\left(t \cdot y\right) \cdot \left(x - z\right)\right)}^{1}\\
\mathbf{elif}\;x \cdot y - z \cdot y \le 5.41316001391597297 \cdot 10^{273}:\\
\;\;\;\;\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 r492345 = x;
double r492346 = y;
double r492347 = r492345 * r492346;
double r492348 = z;
double r492349 = r492348 * r492346;
double r492350 = r492347 - r492349;
double r492351 = t;
double r492352 = r492350 * r492351;
return r492352;
}
double f(double x, double y, double z, double t) {
double r492353 = x;
double r492354 = y;
double r492355 = r492353 * r492354;
double r492356 = z;
double r492357 = r492356 * r492354;
double r492358 = r492355 - r492357;
double r492359 = -1.2464801089300593e+269;
bool r492360 = r492358 <= r492359;
double r492361 = t;
double r492362 = r492361 * r492354;
double r492363 = r492353 - r492356;
double r492364 = r492362 * r492363;
double r492365 = 1.0;
double r492366 = pow(r492364, r492365);
double r492367 = -2.1356808635409048e-295;
bool r492368 = r492358 <= r492367;
double r492369 = r492358 * r492361;
double r492370 = 1.9498152493431e-318;
bool r492371 = r492358 <= r492370;
double r492372 = 5.413160013915973e+273;
bool r492373 = r492358 <= r492372;
double r492374 = r492363 * r492361;
double r492375 = r492354 * r492374;
double r492376 = r492373 ? r492369 : r492375;
double r492377 = r492371 ? r492366 : r492376;
double r492378 = r492368 ? r492369 : r492377;
double r492379 = r492360 ? r492366 : r492378;
return r492379;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.9 |
|---|---|
| Target | 3.1 |
| Herbie | 0.3 |
if (- (* x y) (* z y)) < -1.2464801089300593e+269 or -2.1356808635409048e-295 < (- (* x y) (* z y)) < 1.9498152493431e-318Initial program 31.3
rmApplied pow131.3
Applied pow131.3
Applied pow-prod-down31.3
Simplified0.2
if -1.2464801089300593e+269 < (- (* x y) (* z y)) < -2.1356808635409048e-295 or 1.9498152493431e-318 < (- (* x y) (* z y)) < 5.413160013915973e+273Initial program 0.3
if 5.413160013915973e+273 < (- (* x y) (* z y)) Initial program 48.9
rmApplied distribute-rgt-out--48.9
Applied associate-*l*0.3
Final simplification0.3
herbie shell --seed 2020036 +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))