\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 r8576853 = a1;
double r8576854 = a2;
double r8576855 = r8576853 * r8576854;
double r8576856 = b1;
double r8576857 = b2;
double r8576858 = r8576856 * r8576857;
double r8576859 = r8576855 / r8576858;
return r8576859;
}
double f(double a1, double a2, double b1, double b2) {
double r8576860 = a1;
double r8576861 = a2;
double r8576862 = r8576860 * r8576861;
double r8576863 = 4.966960556448252e-69;
bool r8576864 = r8576862 <= r8576863;
double r8576865 = cbrt(r8576861);
double r8576866 = b2;
double r8576867 = cbrt(r8576866);
double r8576868 = r8576865 / r8576867;
double r8576869 = b1;
double r8576870 = cbrt(r8576869);
double r8576871 = r8576868 / r8576870;
double r8576872 = r8576871 * r8576871;
double r8576873 = r8576872 * r8576860;
double r8576874 = r8576871 * r8576873;
double r8576875 = 8.502441457836898e+166;
bool r8576876 = r8576862 <= r8576875;
double r8576877 = r8576862 / r8576869;
double r8576878 = r8576877 / r8576866;
double r8576879 = r8576876 ? r8576878 : r8576874;
double r8576880 = r8576864 ? r8576874 : r8576879;
return r8576880;
}




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 associate-*l/10.9
rmApplied *-un-lft-identity10.9
Applied times-frac10.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
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))