\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -8.1576239880029206 \cdot 10^{195}:\\
\;\;\;\;a1 \cdot \frac{\frac{a2}{b1}}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le -7.6760268479022844 \cdot 10^{-278}:\\
\;\;\;\;\frac{a1 \cdot a2}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \frac{\frac{1}{b1}}{\sqrt[3]{b2}}\\
\mathbf{elif}\;a1 \cdot a2 \le 1.3851302523781732 \cdot 10^{-273}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 2.0507310125992406 \cdot 10^{162}:\\
\;\;\;\;\frac{a1 \cdot a2}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \frac{\frac{1}{b1}}{\sqrt[3]{b2}}\\
\mathbf{else}:\\
\;\;\;\;a1 \cdot \frac{\frac{a2}{b1}}{b2}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r170979 = a1;
double r170980 = a2;
double r170981 = r170979 * r170980;
double r170982 = b1;
double r170983 = b2;
double r170984 = r170982 * r170983;
double r170985 = r170981 / r170984;
return r170985;
}
double f(double a1, double a2, double b1, double b2) {
double r170986 = a1;
double r170987 = a2;
double r170988 = r170986 * r170987;
double r170989 = -8.157623988002921e+195;
bool r170990 = r170988 <= r170989;
double r170991 = b1;
double r170992 = r170987 / r170991;
double r170993 = b2;
double r170994 = r170992 / r170993;
double r170995 = r170986 * r170994;
double r170996 = -7.676026847902284e-278;
bool r170997 = r170988 <= r170996;
double r170998 = cbrt(r170993);
double r170999 = r170998 * r170998;
double r171000 = r170988 / r170999;
double r171001 = 1.0;
double r171002 = r171001 / r170991;
double r171003 = r171002 / r170998;
double r171004 = r171000 * r171003;
double r171005 = 1.3851302523781732e-273;
bool r171006 = r170988 <= r171005;
double r171007 = r170986 / r170991;
double r171008 = r170987 / r170993;
double r171009 = r171007 * r171008;
double r171010 = 2.0507310125992406e+162;
bool r171011 = r170988 <= r171010;
double r171012 = r171011 ? r171004 : r170995;
double r171013 = r171006 ? r171009 : r171012;
double r171014 = r170997 ? r171004 : r171013;
double r171015 = r170990 ? r170995 : r171014;
return r171015;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.5 |
|---|---|
| Target | 11.3 |
| Herbie | 4.7 |
if (* a1 a2) < -8.157623988002921e+195 or 2.0507310125992406e+162 < (* a1 a2) Initial program 30.8
rmApplied associate-/r*31.9
rmApplied *-un-lft-identity31.9
Applied *-un-lft-identity31.9
Applied times-frac18.2
Applied times-frac11.8
Simplified11.8
if -8.157623988002921e+195 < (* a1 a2) < -7.676026847902284e-278 or 1.3851302523781732e-273 < (* a1 a2) < 2.0507310125992406e+162Initial program 5.0
rmApplied associate-/r*4.6
rmApplied add-cube-cbrt5.4
Applied div-inv5.4
Applied times-frac3.5
if -7.676026847902284e-278 < (* a1 a2) < 1.3851302523781732e-273Initial program 18.1
rmApplied times-frac3.2
Final simplification4.7
herbie shell --seed 2020036 +o rules:numerics
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))