x \cdot \frac{\frac{y}{z} \cdot t}{t}\begin{array}{l}
\mathbf{if}\;y \le -9.484727702764666 \cdot 10^{+241}:\\
\;\;\;\;\frac{x \cdot y}{z}\\
\mathbf{elif}\;y \le -2.333076602971364 \cdot 10^{-69}:\\
\;\;\;\;\frac{1}{\frac{\frac{z}{x}}{y}}\\
\mathbf{elif}\;y \le 6.356954331308777 \cdot 10^{-261}:\\
\;\;\;\;\frac{x \cdot y}{z}\\
\mathbf{elif}\;y \le 5.784716735603109 \cdot 10^{+161}:\\
\;\;\;\;\left(\frac{y}{\sqrt[3]{z}} \cdot \frac{x}{\sqrt[3]{z}}\right) \cdot \frac{1}{\sqrt[3]{z}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x \cdot y}{z}\\
\end{array}double f(double x, double y, double z, double t) {
double r31426009 = x;
double r31426010 = y;
double r31426011 = z;
double r31426012 = r31426010 / r31426011;
double r31426013 = t;
double r31426014 = r31426012 * r31426013;
double r31426015 = r31426014 / r31426013;
double r31426016 = r31426009 * r31426015;
return r31426016;
}
double f(double x, double y, double z, double __attribute__((unused)) t) {
double r31426017 = y;
double r31426018 = -9.484727702764666e+241;
bool r31426019 = r31426017 <= r31426018;
double r31426020 = x;
double r31426021 = r31426020 * r31426017;
double r31426022 = z;
double r31426023 = r31426021 / r31426022;
double r31426024 = -2.333076602971364e-69;
bool r31426025 = r31426017 <= r31426024;
double r31426026 = 1.0;
double r31426027 = r31426022 / r31426020;
double r31426028 = r31426027 / r31426017;
double r31426029 = r31426026 / r31426028;
double r31426030 = 6.356954331308777e-261;
bool r31426031 = r31426017 <= r31426030;
double r31426032 = 5.784716735603109e+161;
bool r31426033 = r31426017 <= r31426032;
double r31426034 = cbrt(r31426022);
double r31426035 = r31426017 / r31426034;
double r31426036 = r31426020 / r31426034;
double r31426037 = r31426035 * r31426036;
double r31426038 = r31426026 / r31426034;
double r31426039 = r31426037 * r31426038;
double r31426040 = r31426033 ? r31426039 : r31426023;
double r31426041 = r31426031 ? r31426023 : r31426040;
double r31426042 = r31426025 ? r31426029 : r31426041;
double r31426043 = r31426019 ? r31426023 : r31426042;
return r31426043;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 14.0 |
|---|---|
| Target | 1.4 |
| Herbie | 5.4 |
if y < -9.484727702764666e+241 or -2.333076602971364e-69 < y < 6.356954331308777e-261 or 5.784716735603109e+161 < y Initial program 14.7
Simplified8.2
rmApplied div-inv8.3
rmApplied un-div-inv8.2
if -9.484727702764666e+241 < y < -2.333076602971364e-69Initial program 15.0
Simplified5.7
rmApplied clear-num6.1
rmApplied associate-/r*5.2
if 6.356954331308777e-261 < y < 5.784716735603109e+161Initial program 12.7
Simplified4.0
rmApplied div-inv4.1
rmApplied add-cube-cbrt4.8
Applied *-un-lft-identity4.8
Applied times-frac4.8
Applied associate-*r*4.8
Simplified2.5
Final simplification5.4
herbie shell --seed 2019165
(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)))