x \cdot \frac{\frac{y}{z} \cdot t}{t}\begin{array}{l}
\mathbf{if}\;y \le -5.712724816744529850925972205775323703178 \cdot 10^{-123}:\\
\;\;\;\;\frac{x}{\frac{z}{y}}\\
\mathbf{elif}\;y \le -1.168603474015212790183272956439621994755 \cdot 10^{-303}:\\
\;\;\;\;\frac{x \cdot y}{z}\\
\mathbf{elif}\;y \le 8.882114101454010031137990055112593171153 \cdot 10^{-160}:\\
\;\;\;\;\frac{x}{\frac{z}{y}}\\
\mathbf{elif}\;y \le 3.615896835308014810814059323846397252145 \cdot 10^{145}:\\
\;\;\;\;\frac{x}{z} \cdot y\\
\mathbf{elif}\;y \le 2.420727102112022088190803134520153686566 \cdot 10^{244}:\\
\;\;\;\;\frac{x \cdot y}{z}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{z} \cdot y\\
\end{array}double f(double x, double y, double z, double t) {
double r3761596 = x;
double r3761597 = y;
double r3761598 = z;
double r3761599 = r3761597 / r3761598;
double r3761600 = t;
double r3761601 = r3761599 * r3761600;
double r3761602 = r3761601 / r3761600;
double r3761603 = r3761596 * r3761602;
return r3761603;
}
double f(double x, double y, double z, double __attribute__((unused)) t) {
double r3761604 = y;
double r3761605 = -5.71272481674453e-123;
bool r3761606 = r3761604 <= r3761605;
double r3761607 = x;
double r3761608 = z;
double r3761609 = r3761608 / r3761604;
double r3761610 = r3761607 / r3761609;
double r3761611 = -1.1686034740152128e-303;
bool r3761612 = r3761604 <= r3761611;
double r3761613 = r3761607 * r3761604;
double r3761614 = r3761613 / r3761608;
double r3761615 = 8.88211410145401e-160;
bool r3761616 = r3761604 <= r3761615;
double r3761617 = 3.615896835308015e+145;
bool r3761618 = r3761604 <= r3761617;
double r3761619 = r3761607 / r3761608;
double r3761620 = r3761619 * r3761604;
double r3761621 = 2.420727102112022e+244;
bool r3761622 = r3761604 <= r3761621;
double r3761623 = r3761622 ? r3761614 : r3761620;
double r3761624 = r3761618 ? r3761620 : r3761623;
double r3761625 = r3761616 ? r3761610 : r3761624;
double r3761626 = r3761612 ? r3761614 : r3761625;
double r3761627 = r3761606 ? r3761610 : r3761626;
return r3761627;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t
Results
if y < -5.71272481674453e-123 or -1.1686034740152128e-303 < y < 8.88211410145401e-160Initial program 14.8
Simplified6.1
Taylor expanded around 0 6.4
rmApplied associate-/l*6.2
if -5.71272481674453e-123 < y < -1.1686034740152128e-303 or 3.615896835308015e+145 < y < 2.420727102112022e+244Initial program 14.8
Simplified8.2
Taylor expanded around 0 7.9
if 8.88211410145401e-160 < y < 3.615896835308015e+145 or 2.420727102112022e+244 < y Initial program 14.4
Simplified4.3
Final simplification6.1
herbie shell --seed 2019171 +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)))