x \cdot \frac{\frac{y}{z} \cdot t}{t}\begin{array}{l}
\mathbf{if}\;\frac{y}{z} \le -3.339100113054096077367478108920979716351 \cdot 10^{-121}:\\
\;\;\;\;x \cdot \frac{y}{z}\\
\mathbf{elif}\;\frac{y}{z} \le 3.95252516672997235341255034294577097892 \cdot 10^{-323}:\\
\;\;\;\;\frac{x \cdot y}{z}\\
\mathbf{elif}\;\frac{y}{z} \le 2.425467457487989591337114825286942269211 \cdot 10^{307}:\\
\;\;\;\;x \cdot \frac{y}{z}\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot y\right) \cdot \frac{1}{z}\\
\end{array}double f(double x, double y, double z, double t) {
double r169059 = x;
double r169060 = y;
double r169061 = z;
double r169062 = r169060 / r169061;
double r169063 = t;
double r169064 = r169062 * r169063;
double r169065 = r169064 / r169063;
double r169066 = r169059 * r169065;
return r169066;
}
double f(double x, double y, double z, double __attribute__((unused)) t) {
double r169067 = y;
double r169068 = z;
double r169069 = r169067 / r169068;
double r169070 = -3.339100113054096e-121;
bool r169071 = r169069 <= r169070;
double r169072 = x;
double r169073 = r169072 * r169069;
double r169074 = 3.95252516673e-323;
bool r169075 = r169069 <= r169074;
double r169076 = r169072 * r169067;
double r169077 = r169076 / r169068;
double r169078 = 2.4254674574879896e+307;
bool r169079 = r169069 <= r169078;
double r169080 = 1.0;
double r169081 = r169080 / r169068;
double r169082 = r169076 * r169081;
double r169083 = r169079 ? r169073 : r169082;
double r169084 = r169075 ? r169077 : r169083;
double r169085 = r169071 ? r169073 : r169084;
return r169085;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t
Results
if (/ y z) < -3.339100113054096e-121 or 3.95252516673e-323 < (/ y z) < 2.4254674574879896e+307Initial program 11.5
Simplified2.4
if -3.339100113054096e-121 < (/ y z) < 3.95252516673e-323Initial program 16.9
Simplified11.2
rmApplied associate-*r/1.2
if 2.4254674574879896e+307 < (/ y z) Initial program 64.0
Simplified63.3
rmApplied div-inv63.3
Applied associate-*r*0.4
Final simplification2.1
herbie shell --seed 2019318
(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)))