x \cdot \frac{\frac{y}{z} \cdot t}{t}\begin{array}{l}
\mathbf{if}\;\frac{y}{z} \le -1.009555688743657053093976996432682877192 \cdot 10^{278}:\\
\;\;\;\;y \cdot \frac{x}{z}\\
\mathbf{elif}\;\frac{y}{z} \le -1.900141742787772715345890115335440787699 \cdot 10^{-270}:\\
\;\;\;\;\frac{x}{\frac{z}{y}}\\
\mathbf{elif}\;\frac{y}{z} \le 4.438182973596565301288302827093808047147 \cdot 10^{-272}:\\
\;\;\;\;\frac{x \cdot y}{z}\\
\mathbf{elif}\;\frac{y}{z} \le 3.561199608254915194562496763078682553454 \cdot 10^{97}:\\
\;\;\;\;\frac{x}{\frac{z}{y}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{x}{z}}{\frac{1}{y}}\\
\end{array}double f(double x, double y, double z, double t) {
double r52934 = x;
double r52935 = y;
double r52936 = z;
double r52937 = r52935 / r52936;
double r52938 = t;
double r52939 = r52937 * r52938;
double r52940 = r52939 / r52938;
double r52941 = r52934 * r52940;
return r52941;
}
double f(double x, double y, double z, double __attribute__((unused)) t) {
double r52942 = y;
double r52943 = z;
double r52944 = r52942 / r52943;
double r52945 = -1.009555688743657e+278;
bool r52946 = r52944 <= r52945;
double r52947 = x;
double r52948 = r52947 / r52943;
double r52949 = r52942 * r52948;
double r52950 = -1.9001417427877727e-270;
bool r52951 = r52944 <= r52950;
double r52952 = r52943 / r52942;
double r52953 = r52947 / r52952;
double r52954 = 4.438182973596565e-272;
bool r52955 = r52944 <= r52954;
double r52956 = r52947 * r52942;
double r52957 = r52956 / r52943;
double r52958 = 3.561199608254915e+97;
bool r52959 = r52944 <= r52958;
double r52960 = 1.0;
double r52961 = r52960 / r52942;
double r52962 = r52948 / r52961;
double r52963 = r52959 ? r52953 : r52962;
double r52964 = r52955 ? r52957 : r52963;
double r52965 = r52951 ? r52953 : r52964;
double r52966 = r52946 ? r52949 : r52965;
return r52966;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t
Results
if (/ y z) < -1.009555688743657e+278Initial program 54.6
Simplified45.9
rmApplied div-inv45.9
Applied associate-*l*0.4
Simplified0.2
if -1.009555688743657e+278 < (/ y z) < -1.9001417427877727e-270 or 4.438182973596565e-272 < (/ y z) < 3.561199608254915e+97Initial program 8.2
Simplified0.2
rmApplied *-un-lft-identity0.2
Applied associate-*l*0.2
Simplified8.7
rmApplied associate-/l*0.2
if -1.9001417427877727e-270 < (/ y z) < 4.438182973596565e-272Initial program 18.9
Simplified15.8
rmApplied *-un-lft-identity15.8
Applied associate-*l*15.8
Simplified0.1
if 3.561199608254915e+97 < (/ y z) Initial program 26.4
Simplified12.8
rmApplied *-un-lft-identity12.8
Applied associate-*l*12.8
Simplified4.1
rmApplied associate-/l*11.7
rmApplied div-inv11.8
Applied associate-/r*4.0
Final simplification0.7
herbie shell --seed 2019303 +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)))