\frac{x \cdot \left(y - z\right)}{y}\begin{array}{l}
\mathbf{if}\;z \le -4.428352457851485571386364768504698313663 \cdot 10^{148}:\\
\;\;\;\;x + \frac{-z}{\frac{y}{x}}\\
\mathbf{elif}\;z \le 4.465897606696847000231694834068591278595 \cdot 10^{-27}:\\
\;\;\;\;x - \frac{x}{\frac{y}{z}}\\
\mathbf{else}:\\
\;\;\;\;x - \frac{x \cdot z}{y}\\
\end{array}double f(double x, double y, double z) {
double r612815 = x;
double r612816 = y;
double r612817 = z;
double r612818 = r612816 - r612817;
double r612819 = r612815 * r612818;
double r612820 = r612819 / r612816;
return r612820;
}
double f(double x, double y, double z) {
double r612821 = z;
double r612822 = -4.4283524578514856e+148;
bool r612823 = r612821 <= r612822;
double r612824 = x;
double r612825 = -r612821;
double r612826 = y;
double r612827 = r612826 / r612824;
double r612828 = r612825 / r612827;
double r612829 = r612824 + r612828;
double r612830 = 4.465897606696847e-27;
bool r612831 = r612821 <= r612830;
double r612832 = r612826 / r612821;
double r612833 = r612824 / r612832;
double r612834 = r612824 - r612833;
double r612835 = r612824 * r612821;
double r612836 = r612835 / r612826;
double r612837 = r612824 - r612836;
double r612838 = r612831 ? r612834 : r612837;
double r612839 = r612823 ? r612829 : r612838;
return r612839;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 12.6 |
|---|---|
| Target | 2.8 |
| Herbie | 3.0 |
if z < -4.4283524578514856e+148Initial program 11.3
Taylor expanded around 0 10.1
Simplified10.1
rmApplied sub-neg10.1
Simplified8.0
if -4.4283524578514856e+148 < z < 4.465897606696847e-27Initial program 12.8
rmApplied associate-/l*0.8
Taylor expanded around 0 3.0
Simplified0.8
if 4.465897606696847e-27 < z Initial program 12.6
Taylor expanded around 0 7.2
Simplified7.2
Final simplification3.0
herbie shell --seed 2019174
(FPCore (x y z)
:name "Diagrams.Backend.Cairo.Internal:setTexture from diagrams-cairo-1.3.0.3"
: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))