x \cdot \frac{\frac{y}{z} \cdot t}{t}\begin{array}{l}
\mathbf{if}\;z \le -3.74083005502277 \cdot 10^{-271}:\\
\;\;\;\;\frac{x}{\frac{z}{y}}\\
\mathbf{elif}\;z \le 3.761519737827246 \cdot 10^{-224}:\\
\;\;\;\;y \cdot \frac{x}{z}\\
\mathbf{elif}\;z \le 4.956742987442585 \cdot 10^{+22}:\\
\;\;\;\;\frac{x}{\frac{z}{y}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x \cdot y}{z}\\
\end{array}double f(double x, double y, double z, double t) {
double r29468911 = x;
double r29468912 = y;
double r29468913 = z;
double r29468914 = r29468912 / r29468913;
double r29468915 = t;
double r29468916 = r29468914 * r29468915;
double r29468917 = r29468916 / r29468915;
double r29468918 = r29468911 * r29468917;
return r29468918;
}
double f(double x, double y, double z, double __attribute__((unused)) t) {
double r29468919 = z;
double r29468920 = -3.74083005502277e-271;
bool r29468921 = r29468919 <= r29468920;
double r29468922 = x;
double r29468923 = y;
double r29468924 = r29468919 / r29468923;
double r29468925 = r29468922 / r29468924;
double r29468926 = 3.761519737827246e-224;
bool r29468927 = r29468919 <= r29468926;
double r29468928 = r29468922 / r29468919;
double r29468929 = r29468923 * r29468928;
double r29468930 = 4.956742987442585e+22;
bool r29468931 = r29468919 <= r29468930;
double r29468932 = r29468922 * r29468923;
double r29468933 = r29468932 / r29468919;
double r29468934 = r29468931 ? r29468925 : r29468933;
double r29468935 = r29468927 ? r29468929 : r29468934;
double r29468936 = r29468921 ? r29468925 : r29468935;
return r29468936;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 14.1 |
|---|---|
| Target | 1.5 |
| Herbie | 6.1 |
if z < -3.74083005502277e-271 or 3.761519737827246e-224 < z < 4.956742987442585e+22Initial program 13.6
Simplified5.6
rmApplied add-cube-cbrt6.5
Applied *-un-lft-identity6.5
Applied times-frac6.5
Applied associate-*r*5.3
Simplified5.3
rmApplied *-un-lft-identity5.3
Applied associate-*l*5.3
Simplified5.3
if -3.74083005502277e-271 < z < 3.761519737827246e-224Initial program 21.6
Simplified14.2
if 4.956742987442585e+22 < z Initial program 13.4
Simplified5.5
rmApplied associate-*r/6.2
Final simplification6.1
herbie shell --seed 2019162
(FPCore (x y z t)
:name "Graphics.Rendering.Chart.Backend.Diagrams:calcFontMetrics from Chart-diagrams-1.5.1, B"
: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)))