x \cdot \frac{\frac{y}{z} \cdot t}{t}\begin{array}{l}
\mathbf{if}\;\frac{y}{z} \le -4.55389167634140265 \cdot 10^{-149}:\\
\;\;\;\;{\left(\frac{x}{\frac{z}{y}}\right)}^{1}\\
\mathbf{elif}\;\frac{y}{z} \le 1.4704572909860111 \cdot 10^{-239}:\\
\;\;\;\;{\left(\frac{x \cdot y}{z}\right)}^{1}\\
\mathbf{elif}\;\frac{y}{z} \le 7.35260291402330968 \cdot 10^{277}:\\
\;\;\;\;x \cdot \frac{y}{z}\\
\mathbf{else}:\\
\;\;\;\;{\left(\frac{1}{\frac{z}{x \cdot y}}\right)}^{1}\\
\end{array}double f(double x, double y, double z, double t) {
double r90588 = x;
double r90589 = y;
double r90590 = z;
double r90591 = r90589 / r90590;
double r90592 = t;
double r90593 = r90591 * r90592;
double r90594 = r90593 / r90592;
double r90595 = r90588 * r90594;
return r90595;
}
double f(double x, double y, double z, double __attribute__((unused)) t) {
double r90596 = y;
double r90597 = z;
double r90598 = r90596 / r90597;
double r90599 = -4.553891676341403e-149;
bool r90600 = r90598 <= r90599;
double r90601 = x;
double r90602 = r90597 / r90596;
double r90603 = r90601 / r90602;
double r90604 = 1.0;
double r90605 = pow(r90603, r90604);
double r90606 = 1.470457290986011e-239;
bool r90607 = r90598 <= r90606;
double r90608 = r90601 * r90596;
double r90609 = r90608 / r90597;
double r90610 = pow(r90609, r90604);
double r90611 = 7.35260291402331e+277;
bool r90612 = r90598 <= r90611;
double r90613 = r90601 * r90598;
double r90614 = r90597 / r90608;
double r90615 = r90604 / r90614;
double r90616 = pow(r90615, r90604);
double r90617 = r90612 ? r90613 : r90616;
double r90618 = r90607 ? r90610 : r90617;
double r90619 = r90600 ? r90605 : r90618;
return r90619;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t
Results
if (/ y z) < -4.553891676341403e-149Initial program 13.5
Simplified5.0
rmApplied add-cube-cbrt6.0
Applied *-un-lft-identity6.0
Applied times-frac6.0
Applied associate-*r*7.4
Simplified7.4
rmApplied pow17.4
Applied pow17.4
Applied pow-prod-down7.4
Simplified9.7
rmApplied associate-/l*4.4
if -4.553891676341403e-149 < (/ y z) < 1.470457290986011e-239Initial program 17.2
Simplified10.4
rmApplied add-cube-cbrt10.7
Applied *-un-lft-identity10.7
Applied times-frac10.7
Applied associate-*r*2.6
Simplified2.6
rmApplied pow12.6
Applied pow12.6
Applied pow-prod-down2.6
Simplified0.9
if 1.470457290986011e-239 < (/ y z) < 7.35260291402331e+277Initial program 9.8
Simplified0.2
if 7.35260291402331e+277 < (/ y z) Initial program 55.4
Simplified49.4
rmApplied add-cube-cbrt49.7
Applied *-un-lft-identity49.7
Applied times-frac49.7
Applied associate-*r*12.6
Simplified12.5
rmApplied pow112.5
Applied pow112.5
Applied pow-prod-down12.5
Simplified0.3
rmApplied clear-num0.4
Final simplification1.8
herbie shell --seed 2020083
(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)))