\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -9.3567683686872443 \cdot 10^{67}:\\
\;\;\;\;\frac{\frac{a1}{b1}}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \frac{a2}{\sqrt[3]{b2}}\\
\mathbf{elif}\;a1 \cdot a2 \le -5.8968119495262209 \cdot 10^{-252}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 2.2548151514008324 \cdot 10^{-288}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 1.32370480772328473 \cdot 10^{277}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{a1}{b1}}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \frac{a2}{\sqrt[3]{b2}}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r168570 = a1;
double r168571 = a2;
double r168572 = r168570 * r168571;
double r168573 = b1;
double r168574 = b2;
double r168575 = r168573 * r168574;
double r168576 = r168572 / r168575;
return r168576;
}
double f(double a1, double a2, double b1, double b2) {
double r168577 = a1;
double r168578 = a2;
double r168579 = r168577 * r168578;
double r168580 = -9.356768368687244e+67;
bool r168581 = r168579 <= r168580;
double r168582 = b1;
double r168583 = r168577 / r168582;
double r168584 = b2;
double r168585 = cbrt(r168584);
double r168586 = r168585 * r168585;
double r168587 = r168583 / r168586;
double r168588 = r168578 / r168585;
double r168589 = r168587 * r168588;
double r168590 = -5.896811949526221e-252;
bool r168591 = r168579 <= r168590;
double r168592 = r168579 / r168582;
double r168593 = r168592 / r168584;
double r168594 = 2.2548151514008324e-288;
bool r168595 = r168579 <= r168594;
double r168596 = r168578 / r168584;
double r168597 = r168583 * r168596;
double r168598 = 1.3237048077232847e+277;
bool r168599 = r168579 <= r168598;
double r168600 = r168599 ? r168593 : r168589;
double r168601 = r168595 ? r168597 : r168600;
double r168602 = r168591 ? r168593 : r168601;
double r168603 = r168581 ? r168589 : r168602;
return r168603;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.3 |
|---|---|
| Target | 11.1 |
| Herbie | 5.2 |
if (* a1 a2) < -9.356768368687244e+67 or 1.3237048077232847e+277 < (* a1 a2) Initial program 26.2
rmApplied times-frac11.2
rmApplied add-cube-cbrt12.0
Applied *-un-lft-identity12.0
Applied times-frac12.0
Applied associate-*r*9.8
Simplified9.8
if -9.356768368687244e+67 < (* a1 a2) < -5.896811949526221e-252 or 2.2548151514008324e-288 < (* a1 a2) < 1.3237048077232847e+277Initial program 5.0
rmApplied associate-/r*4.8
if -5.896811949526221e-252 < (* a1 a2) < 2.2548151514008324e-288Initial program 17.3
rmApplied times-frac2.2
Final simplification5.2
herbie shell --seed 2020089 +o rules:numerics
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))