\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 r136026 = a1;
double r136027 = a2;
double r136028 = r136026 * r136027;
double r136029 = b1;
double r136030 = b2;
double r136031 = r136029 * r136030;
double r136032 = r136028 / r136031;
return r136032;
}
double f(double a1, double a2, double b1, double b2) {
double r136033 = a1;
double r136034 = a2;
double r136035 = r136033 * r136034;
double r136036 = -8.157623988002921e+195;
bool r136037 = r136035 <= r136036;
double r136038 = b1;
double r136039 = r136034 / r136038;
double r136040 = b2;
double r136041 = r136039 / r136040;
double r136042 = r136033 * r136041;
double r136043 = -7.676026847902284e-278;
bool r136044 = r136035 <= r136043;
double r136045 = cbrt(r136040);
double r136046 = r136045 * r136045;
double r136047 = r136035 / r136046;
double r136048 = 1.0;
double r136049 = r136048 / r136038;
double r136050 = r136049 / r136045;
double r136051 = r136047 * r136050;
double r136052 = 1.3851302523781732e-273;
bool r136053 = r136035 <= r136052;
double r136054 = r136033 / r136038;
double r136055 = r136034 / r136040;
double r136056 = r136054 * r136055;
double r136057 = 2.0507310125992406e+162;
bool r136058 = r136035 <= r136057;
double r136059 = r136058 ? r136051 : r136042;
double r136060 = r136053 ? r136056 : r136059;
double r136061 = r136044 ? r136051 : r136060;
double r136062 = r136037 ? r136042 : r136061;
return r136062;
}




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)))