\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 r28860238 = a1;
double r28860239 = a2;
double r28860240 = r28860238 * r28860239;
double r28860241 = b1;
double r28860242 = b2;
double r28860243 = r28860241 * r28860242;
double r28860244 = r28860240 / r28860243;
return r28860244;
}
double f(double a1, double a2, double b1, double b2) {
double r28860245 = a1;
double r28860246 = a2;
double r28860247 = r28860245 * r28860246;
double r28860248 = 4.966960556448252e-69;
bool r28860249 = r28860247 <= r28860248;
double r28860250 = cbrt(r28860246);
double r28860251 = b2;
double r28860252 = cbrt(r28860251);
double r28860253 = r28860250 / r28860252;
double r28860254 = b1;
double r28860255 = cbrt(r28860254);
double r28860256 = r28860253 / r28860255;
double r28860257 = r28860256 * r28860256;
double r28860258 = r28860257 * r28860245;
double r28860259 = r28860256 * r28860258;
double r28860260 = 8.502441457836898e+166;
bool r28860261 = r28860247 <= r28860260;
double r28860262 = r28860247 / r28860254;
double r28860263 = r28860262 / r28860251;
double r28860264 = r28860261 ? r28860263 : r28860259;
double r28860265 = r28860249 ? r28860259 : r28860264;
return r28860265;
}




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)))