\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -3.7468035410768435 \cdot 10^{+235}:\\
\;\;\;\;\left(\frac{\sqrt[3]{a1}}{\sqrt[3]{b1} \cdot \sqrt[3]{b2}} \cdot \frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{\sqrt[3]{b1} \cdot \sqrt[3]{b2}}\right) \cdot \left(\frac{\sqrt[3]{\frac{a2}{\sqrt[3]{b1}}}}{\sqrt[3]{\sqrt[3]{b2}}} \cdot \frac{\sqrt[3]{\frac{a2}{\sqrt[3]{b1}}} \cdot \sqrt[3]{\frac{a2}{\sqrt[3]{b1}}}}{\sqrt[3]{\sqrt[3]{b2} \cdot \sqrt[3]{b2}}}\right)\\
\mathbf{elif}\;a1 \cdot a2 \le -3.1496058984402325 \cdot 10^{-142}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 2.8558537798158504 \cdot 10^{-121}:\\
\;\;\;\;\left(\frac{\sqrt[3]{a1}}{\sqrt[3]{b1} \cdot \sqrt[3]{b2}} \cdot \frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{\sqrt[3]{b1} \cdot \sqrt[3]{b2}}\right) \cdot \left(\frac{\sqrt[3]{\frac{a2}{\sqrt[3]{b1}}}}{\sqrt[3]{\sqrt[3]{b2}}} \cdot \frac{\sqrt[3]{\frac{a2}{\sqrt[3]{b1}}} \cdot \sqrt[3]{\frac{a2}{\sqrt[3]{b1}}}}{\sqrt[3]{\sqrt[3]{b2} \cdot \sqrt[3]{b2}}}\right)\\
\mathbf{elif}\;a1 \cdot a2 \le 1.4659357934311893 \cdot 10^{+112}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\mathbf{else}:\\
\;\;\;\;a1 \cdot \frac{\frac{a2}{b1}}{b2}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r4696563 = a1;
double r4696564 = a2;
double r4696565 = r4696563 * r4696564;
double r4696566 = b1;
double r4696567 = b2;
double r4696568 = r4696566 * r4696567;
double r4696569 = r4696565 / r4696568;
return r4696569;
}
double f(double a1, double a2, double b1, double b2) {
double r4696570 = a1;
double r4696571 = a2;
double r4696572 = r4696570 * r4696571;
double r4696573 = -3.7468035410768435e+235;
bool r4696574 = r4696572 <= r4696573;
double r4696575 = cbrt(r4696570);
double r4696576 = b1;
double r4696577 = cbrt(r4696576);
double r4696578 = b2;
double r4696579 = cbrt(r4696578);
double r4696580 = r4696577 * r4696579;
double r4696581 = r4696575 / r4696580;
double r4696582 = r4696575 * r4696575;
double r4696583 = r4696582 / r4696580;
double r4696584 = r4696581 * r4696583;
double r4696585 = r4696571 / r4696577;
double r4696586 = cbrt(r4696585);
double r4696587 = cbrt(r4696579);
double r4696588 = r4696586 / r4696587;
double r4696589 = r4696586 * r4696586;
double r4696590 = r4696579 * r4696579;
double r4696591 = cbrt(r4696590);
double r4696592 = r4696589 / r4696591;
double r4696593 = r4696588 * r4696592;
double r4696594 = r4696584 * r4696593;
double r4696595 = -3.1496058984402325e-142;
bool r4696596 = r4696572 <= r4696595;
double r4696597 = r4696572 / r4696576;
double r4696598 = r4696597 / r4696578;
double r4696599 = 2.8558537798158504e-121;
bool r4696600 = r4696572 <= r4696599;
double r4696601 = 1.4659357934311893e+112;
bool r4696602 = r4696572 <= r4696601;
double r4696603 = r4696571 / r4696576;
double r4696604 = r4696603 / r4696578;
double r4696605 = r4696570 * r4696604;
double r4696606 = r4696602 ? r4696598 : r4696605;
double r4696607 = r4696600 ? r4696594 : r4696606;
double r4696608 = r4696596 ? r4696598 : r4696607;
double r4696609 = r4696574 ? r4696594 : r4696608;
return r4696609;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 10.8 |
|---|---|
| Target | 10.5 |
| Herbie | 3.8 |
if (* a1 a2) < -3.7468035410768435e+235 or -3.1496058984402325e-142 < (* a1 a2) < 2.8558537798158504e-121Initial program 15.1
rmApplied associate-/r*15.1
rmApplied add-cube-cbrt15.5
Applied add-cube-cbrt15.6
Applied times-frac8.8
Applied times-frac4.0
Simplified3.7
rmApplied add-cube-cbrt3.8
Applied times-frac2.5
rmApplied add-cube-cbrt2.5
Applied cbrt-prod2.5
Applied add-cube-cbrt2.6
Applied times-frac2.6
if -3.7468035410768435e+235 < (* a1 a2) < -3.1496058984402325e-142 or 2.8558537798158504e-121 < (* a1 a2) < 1.4659357934311893e+112Initial program 3.7
rmApplied associate-/r*3.3
if 1.4659357934311893e+112 < (* a1 a2) Initial program 22.9
rmApplied associate-/r*22.5
rmApplied *-un-lft-identity22.5
Applied *-un-lft-identity22.5
Applied times-frac15.1
Applied times-frac10.8
Simplified10.8
Final simplification3.8
herbie shell --seed 2019143 +o rules:numerics
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))