\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -1.1651635672232977 \cdot 10^{+174}:\\
\;\;\;\;\frac{\sqrt[3]{a2}}{\sqrt[3]{b2}} \cdot \frac{a1}{\left(\frac{\sqrt[3]{b2}}{\sqrt[3]{a2}} \cdot \frac{\sqrt[3]{b2}}{\sqrt[3]{a2}}\right) \cdot b1}\\
\mathbf{elif}\;a1 \cdot a2 \le -1.081528776198653 \cdot 10^{-187}:\\
\;\;\;\;\frac{a1 \cdot a2}{b2 \cdot b1}\\
\mathbf{elif}\;a1 \cdot a2 \le 6.553087499451647 \cdot 10^{-288}:\\
\;\;\;\;a1 \cdot \frac{\frac{a2}{b2}}{b1}\\
\mathbf{elif}\;a1 \cdot a2 \le 1.1523086834107354 \cdot 10^{+125}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{\sqrt[3]{a1}}{b1} \cdot \frac{\sqrt[3]{a2}}{\sqrt[3]{b2}}\right) \cdot \frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{\frac{\sqrt[3]{b2}}{\sqrt[3]{a2}} \cdot \frac{\sqrt[3]{b2}}{\sqrt[3]{a2}}}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r5173778 = a1;
double r5173779 = a2;
double r5173780 = r5173778 * r5173779;
double r5173781 = b1;
double r5173782 = b2;
double r5173783 = r5173781 * r5173782;
double r5173784 = r5173780 / r5173783;
return r5173784;
}
double f(double a1, double a2, double b1, double b2) {
double r5173785 = a1;
double r5173786 = a2;
double r5173787 = r5173785 * r5173786;
double r5173788 = -1.1651635672232977e+174;
bool r5173789 = r5173787 <= r5173788;
double r5173790 = cbrt(r5173786);
double r5173791 = b2;
double r5173792 = cbrt(r5173791);
double r5173793 = r5173790 / r5173792;
double r5173794 = r5173792 / r5173790;
double r5173795 = r5173794 * r5173794;
double r5173796 = b1;
double r5173797 = r5173795 * r5173796;
double r5173798 = r5173785 / r5173797;
double r5173799 = r5173793 * r5173798;
double r5173800 = -1.081528776198653e-187;
bool r5173801 = r5173787 <= r5173800;
double r5173802 = r5173791 * r5173796;
double r5173803 = r5173787 / r5173802;
double r5173804 = 6.553087499451647e-288;
bool r5173805 = r5173787 <= r5173804;
double r5173806 = r5173786 / r5173791;
double r5173807 = r5173806 / r5173796;
double r5173808 = r5173785 * r5173807;
double r5173809 = 1.1523086834107354e+125;
bool r5173810 = r5173787 <= r5173809;
double r5173811 = r5173787 / r5173796;
double r5173812 = r5173811 / r5173791;
double r5173813 = cbrt(r5173785);
double r5173814 = r5173813 / r5173796;
double r5173815 = r5173814 * r5173793;
double r5173816 = r5173813 * r5173813;
double r5173817 = r5173816 / r5173795;
double r5173818 = r5173815 * r5173817;
double r5173819 = r5173810 ? r5173812 : r5173818;
double r5173820 = r5173805 ? r5173808 : r5173819;
double r5173821 = r5173801 ? r5173803 : r5173820;
double r5173822 = r5173789 ? r5173799 : r5173821;
return r5173822;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 10.8 |
|---|---|
| Target | 10.6 |
| Herbie | 4.5 |
if (* a1 a2) < -1.1651635672232977e+174Initial program 28.5
rmApplied times-frac10.4
rmApplied add-cube-cbrt11.3
Applied add-cube-cbrt11.5
Applied times-frac11.5
Applied associate-*r*7.1
Simplified6.4
if -1.1651635672232977e+174 < (* a1 a2) < -1.081528776198653e-187Initial program 3.5
rmApplied times-frac14.4
Taylor expanded around 0 3.5
if -1.081528776198653e-187 < (* a1 a2) < 6.553087499451647e-288Initial program 16.0
rmApplied times-frac3.9
rmApplied div-inv4.0
Applied associate-*l*3.9
Simplified3.8
if 6.553087499451647e-288 < (* a1 a2) < 1.1523086834107354e+125Initial program 4.2
rmApplied associate-/r*4.8
if 1.1523086834107354e+125 < (* a1 a2) Initial program 23.4
rmApplied times-frac12.3
rmApplied add-cube-cbrt13.1
Applied add-cube-cbrt13.3
Applied times-frac13.3
Applied associate-*r*8.7
Simplified6.2
rmApplied add-cube-cbrt6.4
Applied times-frac6.7
Applied associate-*l*6.1
Final simplification4.5
herbie shell --seed 2019152
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))