x \cdot \frac{\frac{y}{z} \cdot t}{t}\begin{array}{l}
\mathbf{if}\;\frac{y}{z} \le -3.373126282676869801042410117321373689886 \cdot 10^{248}:\\
\;\;\;\;\frac{1}{\frac{z}{x \cdot y}}\\
\mathbf{elif}\;\frac{y}{z} \le -2.442195260190721375763336527072648974839 \cdot 10^{-111}:\\
\;\;\;\;\frac{x}{\frac{z}{y}}\\
\mathbf{elif}\;\frac{y}{z} \le 8.016173771246957431133751072912619444155 \cdot 10^{-269}:\\
\;\;\;\;\left(x \cdot y\right) \cdot \frac{1}{z}\\
\mathbf{elif}\;\frac{y}{z} \le 1.732643683956572152079035140544113583748 \cdot 10^{175}:\\
\;\;\;\;\frac{x}{\frac{z}{y}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{z}{x \cdot y}}\\
\end{array}double f(double x, double y, double z, double t) {
double r57729 = x;
double r57730 = y;
double r57731 = z;
double r57732 = r57730 / r57731;
double r57733 = t;
double r57734 = r57732 * r57733;
double r57735 = r57734 / r57733;
double r57736 = r57729 * r57735;
return r57736;
}
double f(double x, double y, double z, double __attribute__((unused)) t) {
double r57737 = y;
double r57738 = z;
double r57739 = r57737 / r57738;
double r57740 = -3.37312628267687e+248;
bool r57741 = r57739 <= r57740;
double r57742 = 1.0;
double r57743 = x;
double r57744 = r57743 * r57737;
double r57745 = r57738 / r57744;
double r57746 = r57742 / r57745;
double r57747 = -2.4421952601907214e-111;
bool r57748 = r57739 <= r57747;
double r57749 = r57738 / r57737;
double r57750 = r57743 / r57749;
double r57751 = 8.016173771246957e-269;
bool r57752 = r57739 <= r57751;
double r57753 = r57742 / r57738;
double r57754 = r57744 * r57753;
double r57755 = 1.732643683956572e+175;
bool r57756 = r57739 <= r57755;
double r57757 = r57756 ? r57750 : r57746;
double r57758 = r57752 ? r57754 : r57757;
double r57759 = r57748 ? r57750 : r57758;
double r57760 = r57741 ? r57746 : r57759;
return r57760;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t
Results
if (/ y z) < -3.37312628267687e+248 or 1.732643683956572e+175 < (/ y z) Initial program 44.2
Simplified1.1
rmApplied clear-num1.2
if -3.37312628267687e+248 < (/ y z) < -2.4421952601907214e-111 or 8.016173771246957e-269 < (/ y z) < 1.732643683956572e+175Initial program 8.5
Simplified10.1
rmApplied associate-/l*0.2
if -2.4421952601907214e-111 < (/ y z) < 8.016173771246957e-269Initial program 15.9
Simplified1.9
rmApplied div-inv2.0
Final simplification0.9
herbie shell --seed 2019323 +o rules:numerics
(FPCore (x y z t)
:name "Graphics.Rendering.Chart.Backend.Diagrams:calcFontMetrics from Chart-diagrams-1.5.1"
:precision binary64
(* x (/ (* (/ y z) t) t)))