x \cdot \frac{\frac{y}{z} \cdot t}{t}\begin{array}{l}
\mathbf{if}\;\frac{y}{z} \le -4.539793361071769873969043675808442911102 \cdot 10^{214}:\\
\;\;\;\;y \cdot \frac{x}{z}\\
\mathbf{elif}\;\frac{y}{z} \le -2.530604856090351627042526853504735687815 \cdot 10^{-166}:\\
\;\;\;\;\frac{y}{z} \cdot x\\
\mathbf{elif}\;\frac{y}{z} \le 6.053074699504574675208589942494399087398 \cdot 10^{-63}:\\
\;\;\;\;\frac{y}{\frac{z}{x}}\\
\mathbf{elif}\;\frac{y}{z} \le 6.289758256242324172285873340578120865516 \cdot 10^{161}:\\
\;\;\;\;\frac{y}{z} \cdot x\\
\mathbf{else}:\\
\;\;\;\;\frac{y \cdot x}{z}\\
\end{array}double f(double x, double y, double z, double t) {
double r89402 = x;
double r89403 = y;
double r89404 = z;
double r89405 = r89403 / r89404;
double r89406 = t;
double r89407 = r89405 * r89406;
double r89408 = r89407 / r89406;
double r89409 = r89402 * r89408;
return r89409;
}
double f(double x, double y, double z, double __attribute__((unused)) t) {
double r89410 = y;
double r89411 = z;
double r89412 = r89410 / r89411;
double r89413 = -4.53979336107177e+214;
bool r89414 = r89412 <= r89413;
double r89415 = x;
double r89416 = r89415 / r89411;
double r89417 = r89410 * r89416;
double r89418 = -2.5306048560903516e-166;
bool r89419 = r89412 <= r89418;
double r89420 = r89412 * r89415;
double r89421 = 6.053074699504575e-63;
bool r89422 = r89412 <= r89421;
double r89423 = r89411 / r89415;
double r89424 = r89410 / r89423;
double r89425 = 6.289758256242324e+161;
bool r89426 = r89412 <= r89425;
double r89427 = r89410 * r89415;
double r89428 = r89427 / r89411;
double r89429 = r89426 ? r89420 : r89428;
double r89430 = r89422 ? r89424 : r89429;
double r89431 = r89419 ? r89420 : r89430;
double r89432 = r89414 ? r89417 : r89431;
return r89432;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t
Results
if (/ y z) < -4.53979336107177e+214Initial program 42.7
Simplified0.6
rmApplied *-un-lft-identity0.6
Applied times-frac0.4
Simplified0.4
if -4.53979336107177e+214 < (/ y z) < -2.5306048560903516e-166 or 6.053074699504575e-63 < (/ y z) < 6.289758256242324e+161Initial program 7.3
Simplified11.4
rmApplied associate-/l*10.3
rmApplied associate-/r/0.2
if -2.5306048560903516e-166 < (/ y z) < 6.053074699504575e-63Initial program 14.9
Simplified2.5
rmApplied associate-/l*2.2
if 6.289758256242324e+161 < (/ y z) Initial program 34.1
Simplified2.3
Final simplification1.2
herbie shell --seed 2019305 +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)))