x \cdot \frac{\frac{y}{z} \cdot t}{t}\begin{array}{l}
\mathbf{if}\;\frac{y}{z} \le -2.3161828153264955 \cdot 10^{+221}:\\
\;\;\;\;y \cdot \frac{x}{z}\\
\mathbf{elif}\;\frac{y}{z} \le -4.4642773403213894 \cdot 10^{-101}:\\
\;\;\;\;\frac{y}{z} \cdot x\\
\mathbf{elif}\;\frac{y}{z} \le 9.802087804866568 \cdot 10^{-279}:\\
\;\;\;\;y \cdot \frac{x}{z}\\
\mathbf{elif}\;\frac{y}{z} \le 1.7035288058957 \cdot 10^{+120}:\\
\;\;\;\;\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 r23448093 = x;
double r23448094 = y;
double r23448095 = z;
double r23448096 = r23448094 / r23448095;
double r23448097 = t;
double r23448098 = r23448096 * r23448097;
double r23448099 = r23448098 / r23448097;
double r23448100 = r23448093 * r23448099;
return r23448100;
}
double f(double x, double y, double z, double __attribute__((unused)) t) {
double r23448101 = y;
double r23448102 = z;
double r23448103 = r23448101 / r23448102;
double r23448104 = -2.3161828153264955e+221;
bool r23448105 = r23448103 <= r23448104;
double r23448106 = x;
double r23448107 = r23448106 / r23448102;
double r23448108 = r23448101 * r23448107;
double r23448109 = -4.4642773403213894e-101;
bool r23448110 = r23448103 <= r23448109;
double r23448111 = r23448103 * r23448106;
double r23448112 = 9.802087804866568e-279;
bool r23448113 = r23448103 <= r23448112;
double r23448114 = 1.7035288058957e+120;
bool r23448115 = r23448103 <= r23448114;
double r23448116 = r23448102 / r23448106;
double r23448117 = r23448101 / r23448116;
double r23448118 = r23448115 ? r23448111 : r23448117;
double r23448119 = r23448113 ? r23448108 : r23448118;
double r23448120 = r23448110 ? r23448111 : r23448119;
double r23448121 = r23448105 ? r23448108 : r23448120;
return r23448121;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 15.1 |
|---|---|
| Target | 1.5 |
| Herbie | 1.0 |
if (/ y z) < -2.3161828153264955e+221 or -4.4642773403213894e-101 < (/ y z) < 9.802087804866568e-279Initial program 21.4
Simplified1.6
if -2.3161828153264955e+221 < (/ y z) < -4.4642773403213894e-101 or 9.802087804866568e-279 < (/ y z) < 1.7035288058957e+120Initial program 7.6
Simplified9.6
rmApplied associate-*r/9.7
rmApplied clear-num10.1
rmApplied associate-/r*0.8
Applied associate-/r/0.3
Simplified0.2
if 1.7035288058957e+120 < (/ y z) Initial program 31.1
Simplified2.6
rmApplied clear-num3.0
Applied un-div-inv2.6
Final simplification1.0
herbie shell --seed 2019158
(FPCore (x y z t)
:name "Graphics.Rendering.Chart.Backend.Diagrams:calcFontMetrics from Chart-diagrams-1.5.1, B"
:herbie-target
(if (< (/ (* (/ y z) t) t) -1.20672205123045e+245) (/ y (/ z x)) (if (< (/ (* (/ y z) t) t) -5.907522236933906e-275) (* x (/ y z)) (if (< (/ (* (/ y z) t) t) 5.658954423153415e-65) (/ y (/ z x)) (if (< (/ (* (/ y z) t) t) 2.0087180502407133e+217) (* x (/ y z)) (/ (* y x) z)))))
(* x (/ (* (/ y z) t) t)))