\frac{x \cdot \left(y - z\right)}{y}\begin{array}{l}
\mathbf{if}\;x \le -25525895.1273290403:\\
\;\;\;\;\frac{x}{\frac{y}{y - z}}\\
\mathbf{elif}\;x \le 7.8393557133259353 \cdot 10^{-22}:\\
\;\;\;\;x - \frac{x \cdot z}{y}\\
\mathbf{else}:\\
\;\;\;\;x \cdot \frac{y - z}{y}\\
\end{array}double f(double x, double y, double z) {
double r670025 = x;
double r670026 = y;
double r670027 = z;
double r670028 = r670026 - r670027;
double r670029 = r670025 * r670028;
double r670030 = r670029 / r670026;
return r670030;
}
double f(double x, double y, double z) {
double r670031 = x;
double r670032 = -25525895.12732904;
bool r670033 = r670031 <= r670032;
double r670034 = y;
double r670035 = z;
double r670036 = r670034 - r670035;
double r670037 = r670034 / r670036;
double r670038 = r670031 / r670037;
double r670039 = 7.839355713325935e-22;
bool r670040 = r670031 <= r670039;
double r670041 = r670031 * r670035;
double r670042 = r670041 / r670034;
double r670043 = r670031 - r670042;
double r670044 = r670036 / r670034;
double r670045 = r670031 * r670044;
double r670046 = r670040 ? r670043 : r670045;
double r670047 = r670033 ? r670038 : r670046;
return r670047;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 12.1 |
|---|---|
| Target | 3.1 |
| Herbie | 1.5 |
if x < -25525895.12732904Initial program 23.3
rmApplied associate-/l*0.1
if -25525895.12732904 < x < 7.839355713325935e-22Initial program 4.7
rmApplied associate-/l*5.0
Taylor expanded around 0 2.5
if 7.839355713325935e-22 < x Initial program 20.4
rmApplied *-un-lft-identity20.4
Applied times-frac0.2
Simplified0.2
Final simplification1.5
herbie shell --seed 2020027
(FPCore (x y z)
:name "Diagrams.Backend.Cairo.Internal:setTexture from diagrams-cairo-1.3.0.3"
:precision binary64
:herbie-target
(if (< z -2.060202331921739e+104) (- x (/ (* z x) y)) (if (< z 1.6939766013828526e+213) (/ x (/ y (- y z))) (* (- y z) (/ x y))))
(/ (* x (- y z)) y))