\frac{x \cdot \left(y - z\right)}{y}\begin{array}{l}
\mathbf{if}\;y \le -2.199818942233228404818074520241924245844 \cdot 10^{-310}:\\
\;\;\;\;\frac{1}{\frac{\frac{y}{y - z}}{x}}\\
\mathbf{elif}\;y \le 2.238050679494542897976277200929792247196 \cdot 10^{-168}:\\
\;\;\;\;\frac{\frac{x}{\frac{\sqrt{y}}{\sqrt[3]{y - z} \cdot \sqrt[3]{y - z}}}}{\frac{\sqrt{y}}{\sqrt[3]{y - z}}}\\
\mathbf{else}:\\
\;\;\;\;\left(1 - \frac{z}{y}\right) \cdot x\\
\end{array}double f(double x, double y, double z) {
double r552241 = x;
double r552242 = y;
double r552243 = z;
double r552244 = r552242 - r552243;
double r552245 = r552241 * r552244;
double r552246 = r552245 / r552242;
return r552246;
}
double f(double x, double y, double z) {
double r552247 = y;
double r552248 = -2.19981894223323e-310;
bool r552249 = r552247 <= r552248;
double r552250 = 1.0;
double r552251 = z;
double r552252 = r552247 - r552251;
double r552253 = r552247 / r552252;
double r552254 = x;
double r552255 = r552253 / r552254;
double r552256 = r552250 / r552255;
double r552257 = 2.238050679494543e-168;
bool r552258 = r552247 <= r552257;
double r552259 = sqrt(r552247);
double r552260 = cbrt(r552252);
double r552261 = r552260 * r552260;
double r552262 = r552259 / r552261;
double r552263 = r552254 / r552262;
double r552264 = r552259 / r552260;
double r552265 = r552263 / r552264;
double r552266 = r552251 / r552247;
double r552267 = r552250 - r552266;
double r552268 = r552267 * r552254;
double r552269 = r552258 ? r552265 : r552268;
double r552270 = r552249 ? r552256 : r552269;
return r552270;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 12.6 |
|---|---|
| Target | 3.4 |
| Herbie | 2.4 |
if y < -2.19981894223323e-310Initial program 12.4
rmApplied associate-/l*3.2
rmApplied clear-num3.3
if -2.19981894223323e-310 < y < 2.238050679494543e-168Initial program 10.2
rmApplied associate-/l*12.5
rmApplied add-cube-cbrt13.6
Applied add-sqr-sqrt13.6
Applied times-frac13.6
Applied associate-/r*1.9
if 2.238050679494543e-168 < y Initial program 13.3
rmApplied associate-/l*1.2
rmApplied clear-num1.4
rmApplied div-inv1.4
Applied add-cube-cbrt1.4
Applied times-frac1.6
Simplified1.6
Simplified1.4
Final simplification2.4
herbie shell --seed 2019306
(FPCore (x y z)
:name "Diagrams.Backend.Cairo.Internal:setTexture from diagrams-cairo-1.3.0.3"
:precision binary64
:herbie-target
(if (< z -2.060202331921739e104) (- x (/ (* z x) y)) (if (< z 1.69397660138285259e213) (/ x (/ y (- y z))) (* (- y z) (/ x y))))
(/ (* x (- y z)) y))