x \cdot \frac{\frac{y}{z} \cdot t}{t}\begin{array}{l}
\mathbf{if}\;\frac{y}{z} \le -6.122731566035475311671418161909773301552 \cdot 10^{157}:\\
\;\;\;\;\frac{1}{\frac{z}{x \cdot y}}\\
\mathbf{elif}\;\frac{y}{z} \le -2.242439350440375267697031348628742827796 \cdot 10^{-179}:\\
\;\;\;\;x \cdot \frac{y}{z}\\
\mathbf{elif}\;\frac{y}{z} \le 5.129556799950046333853278890491110988102 \cdot 10^{-271}:\\
\;\;\;\;\frac{x \cdot y}{z}\\
\mathbf{elif}\;\frac{y}{z} \le 1.795095217187765936797771641264103283314 \cdot 10^{286}:\\
\;\;\;\;x \cdot \frac{y}{z}\\
\mathbf{else}:\\
\;\;\;\;\frac{x \cdot y}{z}\\
\end{array}double f(double x, double y, double z, double t) {
double r716098 = x;
double r716099 = y;
double r716100 = z;
double r716101 = r716099 / r716100;
double r716102 = t;
double r716103 = r716101 * r716102;
double r716104 = r716103 / r716102;
double r716105 = r716098 * r716104;
return r716105;
}
double f(double x, double y, double z, double __attribute__((unused)) t) {
double r716106 = y;
double r716107 = z;
double r716108 = r716106 / r716107;
double r716109 = -6.122731566035475e+157;
bool r716110 = r716108 <= r716109;
double r716111 = 1.0;
double r716112 = x;
double r716113 = r716112 * r716106;
double r716114 = r716107 / r716113;
double r716115 = r716111 / r716114;
double r716116 = -2.2424393504403753e-179;
bool r716117 = r716108 <= r716116;
double r716118 = r716112 * r716108;
double r716119 = 5.129556799950046e-271;
bool r716120 = r716108 <= r716119;
double r716121 = r716113 / r716107;
double r716122 = 1.795095217187766e+286;
bool r716123 = r716108 <= r716122;
double r716124 = r716123 ? r716118 : r716121;
double r716125 = r716120 ? r716121 : r716124;
double r716126 = r716117 ? r716118 : r716125;
double r716127 = r716110 ? r716115 : r716126;
return r716127;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 14.5 |
|---|---|
| Target | 1.4 |
| Herbie | 0.5 |
if (/ y z) < -6.122731566035475e+157Initial program 33.9
Simplified18.6
rmApplied associate-*r/2.3
rmApplied clear-num2.4
if -6.122731566035475e+157 < (/ y z) < -2.2424393504403753e-179 or 5.129556799950046e-271 < (/ y z) < 1.795095217187766e+286Initial program 9.0
Simplified0.2
if -2.2424393504403753e-179 < (/ y z) < 5.129556799950046e-271 or 1.795095217187766e+286 < (/ y z) Initial program 21.5
Simplified15.3
rmApplied associate-*r/0.6
Final simplification0.5
herbie shell --seed 2019354 +o rules:numerics
(FPCore (x y z t)
:name "Graphics.Rendering.Chart.Backend.Diagrams:calcFontMetrics from Chart-diagrams-1.5.1, B"
:precision binary64
: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)))