x \cdot \frac{\frac{y}{z} \cdot t}{t}\begin{array}{l}
\mathbf{if}\;\frac{y}{z} \le -1.3965389460309517 \cdot 10^{+227}:\\
\;\;\;\;\frac{x \cdot y}{z}\\
\mathbf{elif}\;\frac{y}{z} \le -1.052978762430741 \cdot 10^{-268}:\\
\;\;\;\;\frac{y}{z} \cdot x\\
\mathbf{elif}\;\frac{y}{z} \le 1.7216736802426 \cdot 10^{-312}:\\
\;\;\;\;\frac{x}{z} \cdot y\\
\mathbf{elif}\;\frac{y}{z} \le 1.1564349635110415 \cdot 10^{+243}:\\
\;\;\;\;\frac{y}{z} \cdot x\\
\mathbf{else}:\\
\;\;\;\;\frac{y}{\frac{z}{x}}\\
\end{array}double f(double x, double y, double z, double t) {
double r3354037 = x;
double r3354038 = y;
double r3354039 = z;
double r3354040 = r3354038 / r3354039;
double r3354041 = t;
double r3354042 = r3354040 * r3354041;
double r3354043 = r3354042 / r3354041;
double r3354044 = r3354037 * r3354043;
return r3354044;
}
double f(double x, double y, double z, double __attribute__((unused)) t) {
double r3354045 = y;
double r3354046 = z;
double r3354047 = r3354045 / r3354046;
double r3354048 = -1.3965389460309517e+227;
bool r3354049 = r3354047 <= r3354048;
double r3354050 = x;
double r3354051 = r3354050 * r3354045;
double r3354052 = r3354051 / r3354046;
double r3354053 = -1.052978762430741e-268;
bool r3354054 = r3354047 <= r3354053;
double r3354055 = r3354047 * r3354050;
double r3354056 = 1.7216736802426e-312;
bool r3354057 = r3354047 <= r3354056;
double r3354058 = r3354050 / r3354046;
double r3354059 = r3354058 * r3354045;
double r3354060 = 1.1564349635110415e+243;
bool r3354061 = r3354047 <= r3354060;
double r3354062 = r3354046 / r3354050;
double r3354063 = r3354045 / r3354062;
double r3354064 = r3354061 ? r3354055 : r3354063;
double r3354065 = r3354057 ? r3354059 : r3354064;
double r3354066 = r3354054 ? r3354055 : r3354065;
double r3354067 = r3354049 ? r3354052 : r3354066;
return r3354067;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t
Results
if (/ y z) < -1.3965389460309517e+227Initial program 43.2
Simplified0.3
rmApplied associate-*l/0.9
if -1.3965389460309517e+227 < (/ y z) < -1.052978762430741e-268 or 1.7216736802426e-312 < (/ y z) < 1.1564349635110415e+243Initial program 9.6
Simplified8.1
rmApplied associate-*l/8.0
rmApplied div-inv8.0
rmApplied pow18.0
Applied pow18.0
Applied pow18.0
Applied pow-prod-down8.0
Applied pow-prod-down8.0
Simplified8.0
rmApplied associate-/r/0.2
if -1.052978762430741e-268 < (/ y z) < 1.7216736802426e-312Initial program 18.4
Simplified0.1
if 1.1564349635110415e+243 < (/ y z) Initial program 45.2
Simplified0.2
rmApplied associate-*l/0.5
rmApplied div-inv0.6
rmApplied pow10.6
Applied pow10.6
Applied pow10.6
Applied pow-prod-down0.6
Applied pow-prod-down0.6
Simplified0.2
Final simplification0.2
herbie shell --seed 2019146 +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)))