x \cdot \frac{\frac{y}{z} \cdot t}{t}\begin{array}{l}
\mathbf{if}\;\frac{y}{z} \le -1.081925593636316638624250852721330734754 \cdot 10^{268} \lor \neg \left(\frac{y}{z} \le -1.636189466711752142567162663177727587498 \cdot 10^{-114} \lor \neg \left(\frac{y}{z} \le 1.319155274396128272951438676958151064215 \cdot 10^{-321}\right) \land \frac{y}{z} \le 1.104049436697308873782781562368572098325 \cdot 10^{252}\right):\\
\;\;\;\;y \cdot \frac{x}{z}\\
\mathbf{else}:\\
\;\;\;\;\frac{y}{z} \cdot x\\
\end{array}double f(double x, double y, double z, double t) {
double r86540 = x;
double r86541 = y;
double r86542 = z;
double r86543 = r86541 / r86542;
double r86544 = t;
double r86545 = r86543 * r86544;
double r86546 = r86545 / r86544;
double r86547 = r86540 * r86546;
return r86547;
}
double f(double x, double y, double z, double __attribute__((unused)) t) {
double r86548 = y;
double r86549 = z;
double r86550 = r86548 / r86549;
double r86551 = -1.0819255936363166e+268;
bool r86552 = r86550 <= r86551;
double r86553 = -1.636189466711752e-114;
bool r86554 = r86550 <= r86553;
double r86555 = 1.3191552743961e-321;
bool r86556 = r86550 <= r86555;
double r86557 = !r86556;
double r86558 = 1.1040494366973089e+252;
bool r86559 = r86550 <= r86558;
bool r86560 = r86557 && r86559;
bool r86561 = r86554 || r86560;
double r86562 = !r86561;
bool r86563 = r86552 || r86562;
double r86564 = x;
double r86565 = r86564 / r86549;
double r86566 = r86548 * r86565;
double r86567 = r86550 * r86564;
double r86568 = r86563 ? r86566 : r86567;
return r86568;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t
Results
if (/ y z) < -1.0819255936363166e+268 or -1.636189466711752e-114 < (/ y z) < 1.3191552743961e-321 or 1.1040494366973089e+252 < (/ y z) Initial program 25.2
Simplified17.6
rmApplied div-inv17.6
Applied associate-*l*1.1
Simplified1.0
if -1.0819255936363166e+268 < (/ y z) < -1.636189466711752e-114 or 1.3191552743961e-321 < (/ y z) < 1.1040494366973089e+252Initial program 9.8
Simplified0.3
Final simplification0.5
herbie shell --seed 2019347 +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)))