\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;b1 \cdot b2 \le -9.78621637012035120889222133129827862576 \cdot 10^{209}:\\
\;\;\;\;\frac{1}{b1 \cdot \frac{\frac{b2}{a2}}{a1}}\\
\mathbf{elif}\;b1 \cdot b2 \le -9.111280530104685398727222154888263046467 \cdot 10^{-184}:\\
\;\;\;\;\frac{\frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{b1 \cdot b2}}{\frac{\frac{1}{a2}}{\sqrt[3]{a1}}}\\
\mathbf{elif}\;b1 \cdot b2 \le 4.74006580620091934483000099877771584647 \cdot 10^{-320}:\\
\;\;\;\;\frac{1}{b1 \cdot \frac{\frac{b2}{a2}}{a1}}\\
\mathbf{elif}\;b1 \cdot b2 \le 2.58951826059365596639353360952197188632 \cdot 10^{173}:\\
\;\;\;\;\frac{\frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{b1 \cdot b2}}{\frac{\frac{1}{a2}}{\sqrt[3]{a1}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r78161 = a1;
double r78162 = a2;
double r78163 = r78161 * r78162;
double r78164 = b1;
double r78165 = b2;
double r78166 = r78164 * r78165;
double r78167 = r78163 / r78166;
return r78167;
}
double f(double a1, double a2, double b1, double b2) {
double r78168 = b1;
double r78169 = b2;
double r78170 = r78168 * r78169;
double r78171 = -9.786216370120351e+209;
bool r78172 = r78170 <= r78171;
double r78173 = 1.0;
double r78174 = a2;
double r78175 = r78169 / r78174;
double r78176 = a1;
double r78177 = r78175 / r78176;
double r78178 = r78168 * r78177;
double r78179 = r78173 / r78178;
double r78180 = -9.111280530104685e-184;
bool r78181 = r78170 <= r78180;
double r78182 = cbrt(r78176);
double r78183 = r78182 * r78182;
double r78184 = r78183 / r78170;
double r78185 = r78173 / r78174;
double r78186 = r78185 / r78182;
double r78187 = r78184 / r78186;
double r78188 = 4.7400658062009e-320;
bool r78189 = r78170 <= r78188;
double r78190 = 2.589518260593656e+173;
bool r78191 = r78170 <= r78190;
double r78192 = r78176 / r78168;
double r78193 = r78174 / r78169;
double r78194 = r78192 * r78193;
double r78195 = r78191 ? r78187 : r78194;
double r78196 = r78189 ? r78179 : r78195;
double r78197 = r78181 ? r78187 : r78196;
double r78198 = r78172 ? r78179 : r78197;
return r78198;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.6 |
|---|---|
| Target | 11.4 |
| Herbie | 4.6 |
if (* b1 b2) < -9.786216370120351e+209 or -9.111280530104685e-184 < (* b1 b2) < 4.7400658062009e-320Initial program 25.7
rmApplied associate-/l*25.3
rmApplied clear-num25.4
rmApplied *-un-lft-identity25.4
Applied *-un-lft-identity25.4
Applied times-frac12.9
Applied times-frac6.7
Simplified6.7
if -9.786216370120351e+209 < (* b1 b2) < -9.111280530104685e-184 or 4.7400658062009e-320 < (* b1 b2) < 2.589518260593656e+173Initial program 5.2
rmApplied associate-/l*5.1
rmApplied clear-num5.5
rmApplied add-cube-cbrt6.2
Applied div-inv6.2
Applied times-frac3.7
Applied associate-/r*3.6
Simplified3.6
if 2.589518260593656e+173 < (* b1 b2) Initial program 16.0
rmApplied times-frac5.3
Final simplification4.6
herbie shell --seed 2019323
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))