\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le 4.966960556448252 \cdot 10^{-69}:\\
\;\;\;\;\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}{\sqrt[3]{b1}} \cdot \left(\left(\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}{\sqrt[3]{b1}} \cdot \frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}{\sqrt[3]{b1}}\right) \cdot a1\right)\\
\mathbf{elif}\;a1 \cdot a2 \le 8.502441457836898 \cdot 10^{+166}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}{\sqrt[3]{b1}} \cdot \left(\left(\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}{\sqrt[3]{b1}} \cdot \frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}}{\sqrt[3]{b1}}\right) \cdot a1\right)\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r2633837 = a1;
double r2633838 = a2;
double r2633839 = r2633837 * r2633838;
double r2633840 = b1;
double r2633841 = b2;
double r2633842 = r2633840 * r2633841;
double r2633843 = r2633839 / r2633842;
return r2633843;
}
double f(double a1, double a2, double b1, double b2) {
double r2633844 = a1;
double r2633845 = a2;
double r2633846 = r2633844 * r2633845;
double r2633847 = 4.966960556448252e-69;
bool r2633848 = r2633846 <= r2633847;
double r2633849 = cbrt(r2633845);
double r2633850 = b2;
double r2633851 = cbrt(r2633850);
double r2633852 = r2633849 / r2633851;
double r2633853 = b1;
double r2633854 = cbrt(r2633853);
double r2633855 = r2633852 / r2633854;
double r2633856 = r2633855 * r2633855;
double r2633857 = r2633856 * r2633844;
double r2633858 = r2633855 * r2633857;
double r2633859 = 8.502441457836898e+166;
bool r2633860 = r2633846 <= r2633859;
double r2633861 = r2633846 / r2633853;
double r2633862 = r2633861 / r2633850;
double r2633863 = r2633860 ? r2633862 : r2633858;
double r2633864 = r2633848 ? r2633858 : r2633863;
return r2633864;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.7 |
|---|---|
| Target | 11.4 |
| Herbie | 2.5 |
if (* a1 a2) < 4.966960556448252e-69 or 8.502441457836898e+166 < (* a1 a2) Initial program 13.4
rmApplied times-frac10.3
rmApplied div-inv10.3
Applied associate-*l*10.4
Simplified10.4
rmApplied add-cube-cbrt11.0
Applied add-cube-cbrt11.1
Applied add-cube-cbrt11.2
Applied times-frac11.2
Applied times-frac7.5
Applied associate-*r*2.8
Simplified2.2
if 4.966960556448252e-69 < (* a1 a2) < 8.502441457836898e+166Initial program 3.5
rmApplied associate-/r*3.9
Final simplification2.5
herbie shell --seed 2019128 +o rules:numerics
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))