\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -8.29796578676969 \cdot 10^{+222}:\\
\;\;\;\;\frac{a1}{\frac{b2}{a2} \cdot b1}\\
\mathbf{elif}\;a1 \cdot a2 \le -2.7996586332702162 \cdot 10^{-300}:\\
\;\;\;\;\left(a1 \cdot a2\right) \cdot \frac{1}{b1 \cdot b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 8.211761671392944 \cdot 10^{-166}:\\
\;\;\;\;\frac{1}{\frac{b2}{a2} \cdot \frac{b1}{a1}}\\
\mathbf{elif}\;a1 \cdot a2 \le 5.314779618615164 \cdot 10^{+173}:\\
\;\;\;\;\left(a1 \cdot a2\right) \cdot \frac{1}{b1 \cdot b2}\\
\mathbf{else}:\\
\;\;\;\;\frac{a1}{\frac{b2}{a2} \cdot b1}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r3431492 = a1;
double r3431493 = a2;
double r3431494 = r3431492 * r3431493;
double r3431495 = b1;
double r3431496 = b2;
double r3431497 = r3431495 * r3431496;
double r3431498 = r3431494 / r3431497;
return r3431498;
}
double f(double a1, double a2, double b1, double b2) {
double r3431499 = a1;
double r3431500 = a2;
double r3431501 = r3431499 * r3431500;
double r3431502 = -8.29796578676969e+222;
bool r3431503 = r3431501 <= r3431502;
double r3431504 = b2;
double r3431505 = r3431504 / r3431500;
double r3431506 = b1;
double r3431507 = r3431505 * r3431506;
double r3431508 = r3431499 / r3431507;
double r3431509 = -2.7996586332702162e-300;
bool r3431510 = r3431501 <= r3431509;
double r3431511 = 1.0;
double r3431512 = r3431506 * r3431504;
double r3431513 = r3431511 / r3431512;
double r3431514 = r3431501 * r3431513;
double r3431515 = 8.211761671392944e-166;
bool r3431516 = r3431501 <= r3431515;
double r3431517 = r3431506 / r3431499;
double r3431518 = r3431505 * r3431517;
double r3431519 = r3431511 / r3431518;
double r3431520 = 5.314779618615164e+173;
bool r3431521 = r3431501 <= r3431520;
double r3431522 = r3431521 ? r3431514 : r3431508;
double r3431523 = r3431516 ? r3431519 : r3431522;
double r3431524 = r3431510 ? r3431514 : r3431523;
double r3431525 = r3431503 ? r3431508 : r3431524;
return r3431525;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.2 |
|---|---|
| Target | 11.1 |
| Herbie | 5.6 |
if (* a1 a2) < -8.29796578676969e+222 or 5.314779618615164e+173 < (* a1 a2) Initial program 35.1
rmApplied associate-/l*19.1
rmApplied *-un-lft-identity19.1
Applied times-frac10.9
Simplified10.9
if -8.29796578676969e+222 < (* a1 a2) < -2.7996586332702162e-300 or 8.211761671392944e-166 < (* a1 a2) < 5.314779618615164e+173Initial program 4.5
rmApplied div-inv4.8
if -2.7996586332702162e-300 < (* a1 a2) < 8.211761671392944e-166Initial program 15.2
rmApplied clear-num15.4
rmApplied times-frac5.0
Final simplification5.6
herbie shell --seed 2019165
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))