x \cdot \frac{\frac{y}{z} \cdot t}{t}\begin{array}{l}
\mathbf{if}\;\frac{y}{z} \le -1.245947516265854964311200045000519905686 \cdot 10^{-233}:\\
\;\;\;\;\frac{y}{z} \cdot x\\
\mathbf{elif}\;\frac{y}{z} \le 6.872941476643587911784112841004328702772 \cdot 10^{-272}:\\
\;\;\;\;\frac{x \cdot y}{z}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{\frac{z}{y}}\\
\end{array}double f(double x, double y, double z, double t) {
double r4334428 = x;
double r4334429 = y;
double r4334430 = z;
double r4334431 = r4334429 / r4334430;
double r4334432 = t;
double r4334433 = r4334431 * r4334432;
double r4334434 = r4334433 / r4334432;
double r4334435 = r4334428 * r4334434;
return r4334435;
}
double f(double x, double y, double z, double __attribute__((unused)) t) {
double r4334436 = y;
double r4334437 = z;
double r4334438 = r4334436 / r4334437;
double r4334439 = -1.245947516265855e-233;
bool r4334440 = r4334438 <= r4334439;
double r4334441 = x;
double r4334442 = r4334438 * r4334441;
double r4334443 = 6.872941476643588e-272;
bool r4334444 = r4334438 <= r4334443;
double r4334445 = r4334441 * r4334436;
double r4334446 = r4334445 / r4334437;
double r4334447 = r4334437 / r4334436;
double r4334448 = r4334441 / r4334447;
double r4334449 = r4334444 ? r4334446 : r4334448;
double r4334450 = r4334440 ? r4334442 : r4334449;
return r4334450;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t
Results
if (/ y z) < -1.245947516265855e-233Initial program 13.3
Simplified7.8
rmApplied *-un-lft-identity7.8
Applied times-frac4.3
Simplified4.3
if -1.245947516265855e-233 < (/ y z) < 6.872941476643588e-272Initial program 18.6
Simplified0.4
rmApplied add-cube-cbrt0.8
Applied times-frac3.1
rmApplied frac-times0.8
Simplified0.4
if 6.872941476643588e-272 < (/ y z) Initial program 14.0
Simplified8.0
rmApplied associate-/l*3.8
Final simplification3.3
herbie shell --seed 2019171 +o rules:numerics
(FPCore (x y z t)
:name "Graphics.Rendering.Chart.Backend.Diagrams:calcFontMetrics from Chart-diagrams-1.5.1"
(* x (/ (* (/ y z) t) t)))