x \cdot \frac{\frac{y}{z} \cdot t}{t}\begin{array}{l}
\mathbf{if}\;x \cdot \frac{\frac{y}{z} \cdot t}{t} = -\infty:\\
\;\;\;\;\frac{1}{z} \cdot \left(x \cdot y\right)\\
\mathbf{elif}\;x \cdot \frac{\frac{y}{z} \cdot t}{t} \le -2.643654455052194 \cdot 10^{-281}:\\
\;\;\;\;x \cdot \frac{\frac{y}{z} \cdot t}{t}\\
\mathbf{elif}\;x \cdot \frac{\frac{y}{z} \cdot t}{t} \le 0.0:\\
\;\;\;\;\frac{x \cdot y}{z}\\
\mathbf{elif}\;x \cdot \frac{\frac{y}{z} \cdot t}{t} \le 5.955864120415916 \cdot 10^{+280}:\\
\;\;\;\;x \cdot \frac{\frac{y}{z} \cdot t}{t}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{z} \cdot y\\
\end{array}double f(double x, double y, double z, double t) {
double r4511425 = x;
double r4511426 = y;
double r4511427 = z;
double r4511428 = r4511426 / r4511427;
double r4511429 = t;
double r4511430 = r4511428 * r4511429;
double r4511431 = r4511430 / r4511429;
double r4511432 = r4511425 * r4511431;
return r4511432;
}
double f(double x, double y, double z, double t) {
double r4511433 = x;
double r4511434 = y;
double r4511435 = z;
double r4511436 = r4511434 / r4511435;
double r4511437 = t;
double r4511438 = r4511436 * r4511437;
double r4511439 = r4511438 / r4511437;
double r4511440 = r4511433 * r4511439;
double r4511441 = -inf.0;
bool r4511442 = r4511440 <= r4511441;
double r4511443 = 1.0;
double r4511444 = r4511443 / r4511435;
double r4511445 = r4511433 * r4511434;
double r4511446 = r4511444 * r4511445;
double r4511447 = -2.643654455052194e-281;
bool r4511448 = r4511440 <= r4511447;
double r4511449 = 0.0;
bool r4511450 = r4511440 <= r4511449;
double r4511451 = r4511445 / r4511435;
double r4511452 = 5.955864120415916e+280;
bool r4511453 = r4511440 <= r4511452;
double r4511454 = r4511433 / r4511435;
double r4511455 = r4511454 * r4511434;
double r4511456 = r4511453 ? r4511440 : r4511455;
double r4511457 = r4511450 ? r4511451 : r4511456;
double r4511458 = r4511448 ? r4511440 : r4511457;
double r4511459 = r4511442 ? r4511446 : r4511458;
return r4511459;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t
Results
if (* x (/ (* (/ y z) t) t)) < -inf.0Initial program 60.6
Simplified3.5
rmApplied *-un-lft-identity3.5
Applied add-cube-cbrt4.5
Applied times-frac4.5
Applied associate-*r*3.7
Simplified3.7
rmApplied div-inv3.7
Applied associate-*r*4.2
Simplified3.3
if -inf.0 < (* x (/ (* (/ y z) t) t)) < -2.643654455052194e-281 or 0.0 < (* x (/ (* (/ y z) t) t)) < 5.955864120415916e+280Initial program 1.0
if -2.643654455052194e-281 < (* x (/ (* (/ y z) t) t)) < 0.0Initial program 21.1
Simplified1.7
rmApplied *-un-lft-identity1.7
Applied add-cube-cbrt2.1
Applied times-frac2.1
Applied associate-*r*1.5
Simplified1.5
rmApplied associate-*l*5.2
rmApplied *-un-lft-identity5.2
Applied add-cube-cbrt5.2
Applied cbrt-prod5.3
Applied times-frac5.3
Applied associate-*r*5.2
Simplified5.2
Taylor expanded around 0 1.6
if 5.955864120415916e+280 < (* x (/ (* (/ y z) t) t)) Initial program 53.9
Simplified4.8
Final simplification1.6
herbie shell --seed 2019163 +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)))