\frac{x \cdot \left(y + z\right)}{z}\begin{array}{l}
\mathbf{if}\;z \le -2.089911330877771451248451588593061755111 \cdot 10^{-129} \lor \neg \left(z \le -1.26295748591940369208875411960667007374 \cdot 10^{-259}\right) \land \left(z \le 9.920339495877500547742673232912797278818 \cdot 10^{-231} \lor \neg \left(z \le 1.217132990787068613477600742069466164471 \cdot 10^{-83}\right)\right):\\
\;\;\;\;x + \frac{x}{\frac{z}{y}}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{1}{z} \cdot \left(x \cdot y\right)\\
\end{array}double f(double x, double y, double z) {
double r413444 = x;
double r413445 = y;
double r413446 = z;
double r413447 = r413445 + r413446;
double r413448 = r413444 * r413447;
double r413449 = r413448 / r413446;
return r413449;
}
double f(double x, double y, double z) {
double r413450 = z;
double r413451 = -2.0899113308777715e-129;
bool r413452 = r413450 <= r413451;
double r413453 = -1.2629574859194037e-259;
bool r413454 = r413450 <= r413453;
double r413455 = !r413454;
double r413456 = 9.9203394958775e-231;
bool r413457 = r413450 <= r413456;
double r413458 = 1.2171329907870686e-83;
bool r413459 = r413450 <= r413458;
double r413460 = !r413459;
bool r413461 = r413457 || r413460;
bool r413462 = r413455 && r413461;
bool r413463 = r413452 || r413462;
double r413464 = x;
double r413465 = y;
double r413466 = r413450 / r413465;
double r413467 = r413464 / r413466;
double r413468 = r413464 + r413467;
double r413469 = 1.0;
double r413470 = r413469 / r413450;
double r413471 = r413464 * r413465;
double r413472 = r413470 * r413471;
double r413473 = r413464 + r413472;
double r413474 = r413463 ? r413468 : r413473;
return r413474;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 12.0 |
|---|---|
| Target | 2.9 |
| Herbie | 2.1 |
if z < -2.0899113308777715e-129 or -1.2629574859194037e-259 < z < 9.9203394958775e-231 or 1.2171329907870686e-83 < z Initial program 12.9
Simplified3.6
rmApplied fma-udef3.6
Simplified1.6
if -2.0899113308777715e-129 < z < -1.2629574859194037e-259 or 9.9203394958775e-231 < z < 1.2171329907870686e-83Initial program 8.1
Simplified10.3
rmApplied fma-udef10.3
Simplified8.3
rmApplied div-inv9.1
Simplified9.1
rmApplied div-inv9.1
Applied associate-*r*3.9
Simplified3.9
Final simplification2.1
herbie shell --seed 2019194 +o rules:numerics
(FPCore (x y z)
:name "Numeric.SpecFunctions:choose from math-functions-0.1.5.2"
:herbie-target
(/ x (/ z (+ y z)))
(/ (* x (+ y z)) z))