\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;\frac{a1 \cdot a2}{b1 \cdot b2} = -\infty:\\
\;\;\;\;\frac{\frac{a1}{\sqrt[3]{b2}}}{\sqrt[3]{b2}} \cdot \frac{\frac{a2}{b1}}{\sqrt[3]{b2}}\\
\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -1.5091135102985783 \cdot 10^{-293}:\\
\;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\
\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 0.0:\\
\;\;\;\;\left(\frac{\frac{a1}{\sqrt[3]{b2}}}{\sqrt[3]{b2}} \cdot \frac{\sqrt[3]{\frac{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}} \cdot \sqrt[3]{\frac{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}}}{\frac{1}{\frac{\sqrt[3]{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}}{\sqrt[3]{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}}}}\right) \cdot \frac{\sqrt[3]{\frac{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}}}{\frac{\sqrt[3]{b2}}{\frac{\sqrt[3]{\sqrt[3]{a2}}}{\sqrt[3]{\sqrt[3]{b1}}}}}\\
\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 2.7924622985567088 \cdot 10^{265}:\\
\;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\
\mathbf{else}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r232571 = a1;
double r232572 = a2;
double r232573 = r232571 * r232572;
double r232574 = b1;
double r232575 = b2;
double r232576 = r232574 * r232575;
double r232577 = r232573 / r232576;
return r232577;
}
double f(double a1, double a2, double b1, double b2) {
double r232578 = a1;
double r232579 = a2;
double r232580 = r232578 * r232579;
double r232581 = b1;
double r232582 = b2;
double r232583 = r232581 * r232582;
double r232584 = r232580 / r232583;
double r232585 = -inf.0;
bool r232586 = r232584 <= r232585;
double r232587 = cbrt(r232582);
double r232588 = r232578 / r232587;
double r232589 = r232588 / r232587;
double r232590 = r232579 / r232581;
double r232591 = r232590 / r232587;
double r232592 = r232589 * r232591;
double r232593 = -1.5091135102985783e-293;
bool r232594 = r232584 <= r232593;
double r232595 = 0.0;
bool r232596 = r232584 <= r232595;
double r232597 = cbrt(r232579);
double r232598 = r232597 * r232597;
double r232599 = cbrt(r232581);
double r232600 = r232599 * r232599;
double r232601 = r232598 / r232600;
double r232602 = cbrt(r232601);
double r232603 = r232602 * r232602;
double r232604 = 1.0;
double r232605 = cbrt(r232598);
double r232606 = cbrt(r232600);
double r232607 = r232605 / r232606;
double r232608 = r232604 / r232607;
double r232609 = r232603 / r232608;
double r232610 = r232589 * r232609;
double r232611 = cbrt(r232597);
double r232612 = cbrt(r232599);
double r232613 = r232611 / r232612;
double r232614 = r232587 / r232613;
double r232615 = r232602 / r232614;
double r232616 = r232610 * r232615;
double r232617 = 2.7924622985567088e+265;
bool r232618 = r232584 <= r232617;
double r232619 = r232578 / r232581;
double r232620 = r232579 / r232582;
double r232621 = r232619 * r232620;
double r232622 = r232618 ? r232584 : r232621;
double r232623 = r232596 ? r232616 : r232622;
double r232624 = r232594 ? r232584 : r232623;
double r232625 = r232586 ? r232592 : r232624;
return r232625;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.4 |
|---|---|
| Target | 11.4 |
| Herbie | 2.0 |
if (/ (* a1 a2) (* b1 b2)) < -inf.0Initial program 64.0
rmApplied associate-/r*34.4
rmApplied add-cube-cbrt34.9
Applied *-un-lft-identity34.9
Applied times-frac16.1
Applied times-frac9.7
Simplified9.7
if -inf.0 < (/ (* a1 a2) (* b1 b2)) < -1.5091135102985783e-293 or 0.0 < (/ (* a1 a2) (* b1 b2)) < 2.7924622985567088e+265Initial program 0.9
if -1.5091135102985783e-293 < (/ (* a1 a2) (* b1 b2)) < 0.0Initial program 13.6
rmApplied associate-/r*6.7
rmApplied add-cube-cbrt6.8
Applied *-un-lft-identity6.8
Applied times-frac4.0
Applied times-frac2.7
Simplified2.7
rmApplied add-cube-cbrt2.7
Applied add-cube-cbrt2.8
Applied times-frac2.8
Applied associate-/l*2.5
rmApplied add-cube-cbrt2.5
Applied cbrt-prod2.5
Applied add-cube-cbrt2.5
Applied cbrt-prod2.5
Applied times-frac2.5
Applied *-un-lft-identity2.5
Applied times-frac2.5
Applied add-cube-cbrt2.5
Applied times-frac2.5
Applied associate-*r*1.1
if 2.7924622985567088e+265 < (/ (* a1 a2) (* b1 b2)) Initial program 54.3
rmApplied times-frac10.1
Final simplification2.0
herbie shell --seed 2020033 +o rules:numerics
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))