\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;b1 \cdot b2 \le -2.263420601237582 \cdot 10^{+121}:\\
\;\;\;\;\frac{\frac{a1}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}}}{\frac{b2}{\sqrt[3]{a2}}}\\
\mathbf{elif}\;b1 \cdot b2 \le -3.4616176714706303 \cdot 10^{-128}:\\
\;\;\;\;\frac{a1}{\sqrt[3]{\frac{b1 \cdot b2}{a2}} \cdot \left(\sqrt[3]{\frac{b1 \cdot b2}{a2}} \cdot \sqrt[3]{\frac{b1 \cdot b2}{a2}}\right)}\\
\mathbf{elif}\;b1 \cdot b2 \le 1.9348661113959857 \cdot 10^{-269}:\\
\;\;\;\;\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}} \cdot \frac{\frac{a1}{\frac{b1}{\sqrt[3]{a2}}}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}\\
\mathbf{elif}\;b1 \cdot b2 \le 9.736381993966282 \cdot 10^{+134}:\\
\;\;\;\;a2 \cdot \frac{a1}{b1 \cdot b2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}} \cdot \frac{\frac{a1}{\frac{b1}{\sqrt[3]{a2}}}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r10541254 = a1;
double r10541255 = a2;
double r10541256 = r10541254 * r10541255;
double r10541257 = b1;
double r10541258 = b2;
double r10541259 = r10541257 * r10541258;
double r10541260 = r10541256 / r10541259;
return r10541260;
}
double f(double a1, double a2, double b1, double b2) {
double r10541261 = b1;
double r10541262 = b2;
double r10541263 = r10541261 * r10541262;
double r10541264 = -2.263420601237582e+121;
bool r10541265 = r10541263 <= r10541264;
double r10541266 = a1;
double r10541267 = a2;
double r10541268 = cbrt(r10541267);
double r10541269 = r10541268 * r10541268;
double r10541270 = r10541261 / r10541269;
double r10541271 = r10541266 / r10541270;
double r10541272 = r10541262 / r10541268;
double r10541273 = r10541271 / r10541272;
double r10541274 = -3.4616176714706303e-128;
bool r10541275 = r10541263 <= r10541274;
double r10541276 = r10541263 / r10541267;
double r10541277 = cbrt(r10541276);
double r10541278 = r10541277 * r10541277;
double r10541279 = r10541277 * r10541278;
double r10541280 = r10541266 / r10541279;
double r10541281 = 1.9348661113959857e-269;
bool r10541282 = r10541263 <= r10541281;
double r10541283 = cbrt(r10541272);
double r10541284 = r10541268 / r10541283;
double r10541285 = r10541284 / r10541283;
double r10541286 = r10541261 / r10541268;
double r10541287 = r10541266 / r10541286;
double r10541288 = r10541287 / r10541283;
double r10541289 = r10541285 * r10541288;
double r10541290 = 9.736381993966282e+134;
bool r10541291 = r10541263 <= r10541290;
double r10541292 = r10541266 / r10541263;
double r10541293 = r10541267 * r10541292;
double r10541294 = r10541291 ? r10541293 : r10541289;
double r10541295 = r10541282 ? r10541289 : r10541294;
double r10541296 = r10541275 ? r10541280 : r10541295;
double r10541297 = r10541265 ? r10541273 : r10541296;
return r10541297;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 10.5 |
|---|---|
| Target | 11.0 |
| Herbie | 5.3 |
if (* b1 b2) < -2.263420601237582e+121Initial program 11.5
rmApplied associate-/l*12.8
rmApplied add-cube-cbrt13.1
Applied times-frac8.8
Applied associate-/r*6.3
if -2.263420601237582e+121 < (* b1 b2) < -3.4616176714706303e-128Initial program 2.9
rmApplied associate-/l*3.3
rmApplied add-cube-cbrt4.1
if -3.4616176714706303e-128 < (* b1 b2) < 1.9348661113959857e-269 or 9.736381993966282e+134 < (* b1 b2) Initial program 19.1
rmApplied associate-/l*19.7
rmApplied add-cube-cbrt20.1
Applied times-frac11.3
Applied associate-/r*6.4
rmApplied add-cube-cbrt6.5
Applied *-un-lft-identity6.5
Applied times-frac6.5
Applied *-un-lft-identity6.5
Applied times-frac6.6
Applied times-frac5.9
Simplified5.9
if 1.9348661113959857e-269 < (* b1 b2) < 9.736381993966282e+134Initial program 4.5
rmApplied associate-/l*4.8
rmApplied associate-/r/4.7
Final simplification5.3
herbie shell --seed 2019135 +o rules:numerics
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))