x \cdot \frac{\frac{y}{z} \cdot t}{t}\begin{array}{l}
\mathbf{if}\;\frac{y}{z} \le 6.572772375852078491850975400123842729186 \cdot 10^{50}:\\
\;\;\;\;\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\sqrt[3]{z}} \cdot \left(\frac{\sqrt[3]{x}}{\sqrt[3]{z}} \cdot \frac{y}{\sqrt[3]{\sqrt[3]{z} \cdot \sqrt[3]{z}} \cdot \sqrt[3]{\sqrt[3]{z}}}\right)\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \frac{x \cdot y}{z}\\
\end{array}double f(double x, double y, double z, double t) {
double r677925 = x;
double r677926 = y;
double r677927 = z;
double r677928 = r677926 / r677927;
double r677929 = t;
double r677930 = r677928 * r677929;
double r677931 = r677930 / r677929;
double r677932 = r677925 * r677931;
return r677932;
}
double f(double x, double y, double z, double __attribute__((unused)) t) {
double r677933 = y;
double r677934 = z;
double r677935 = r677933 / r677934;
double r677936 = 6.5727723758520785e+50;
bool r677937 = r677935 <= r677936;
double r677938 = x;
double r677939 = cbrt(r677938);
double r677940 = r677939 * r677939;
double r677941 = cbrt(r677934);
double r677942 = r677940 / r677941;
double r677943 = r677939 / r677941;
double r677944 = r677941 * r677941;
double r677945 = cbrt(r677944);
double r677946 = cbrt(r677941);
double r677947 = r677945 * r677946;
double r677948 = r677933 / r677947;
double r677949 = r677943 * r677948;
double r677950 = r677942 * r677949;
double r677951 = 1.0;
double r677952 = r677938 * r677933;
double r677953 = r677952 / r677934;
double r677954 = r677951 * r677953;
double r677955 = r677937 ? r677950 : r677954;
return r677955;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 15.2 |
|---|---|
| Target | 1.7 |
| Herbie | 3.1 |
if (/ y z) < 6.5727723758520785e+50Initial program 13.5
Simplified5.7
rmApplied add-cube-cbrt6.5
Applied *-un-lft-identity6.5
Applied times-frac6.5
Applied associate-*r*5.8
Simplified5.8
rmApplied add-cube-cbrt5.8
Applied cbrt-prod5.9
rmApplied add-cube-cbrt6.0
Applied times-frac6.0
Applied associate-*l*2.6
if 6.5727723758520785e+50 < (/ y z) Initial program 24.7
Simplified11.0
rmApplied add-cube-cbrt12.0
Applied *-un-lft-identity12.0
Applied times-frac12.0
Applied associate-*r*6.4
Simplified6.4
rmApplied *-un-lft-identity6.4
Applied associate-*l*6.4
Simplified5.9
Final simplification3.1
herbie shell --seed 2020001
(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)))