\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -5.361684755503667 \cdot 10^{+306}:\\
\;\;\;\;\frac{\frac{a1}{\frac{b2}{a2}}}{b1}\\
\mathbf{elif}\;a1 \cdot a2 \le -2.5839142907912905 \cdot 10^{-176}:\\
\;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 6.786326304240603 \cdot 10^{-220}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\mathbf{else}:\\
\;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r6172540 = a1;
double r6172541 = a2;
double r6172542 = r6172540 * r6172541;
double r6172543 = b1;
double r6172544 = b2;
double r6172545 = r6172543 * r6172544;
double r6172546 = r6172542 / r6172545;
return r6172546;
}
double f(double a1, double a2, double b1, double b2) {
double r6172547 = a1;
double r6172548 = a2;
double r6172549 = r6172547 * r6172548;
double r6172550 = -5.361684755503667e+306;
bool r6172551 = r6172549 <= r6172550;
double r6172552 = b2;
double r6172553 = r6172552 / r6172548;
double r6172554 = r6172547 / r6172553;
double r6172555 = b1;
double r6172556 = r6172554 / r6172555;
double r6172557 = -2.5839142907912905e-176;
bool r6172558 = r6172549 <= r6172557;
double r6172559 = r6172555 * r6172552;
double r6172560 = r6172549 / r6172559;
double r6172561 = 6.786326304240603e-220;
bool r6172562 = r6172549 <= r6172561;
double r6172563 = r6172547 / r6172555;
double r6172564 = r6172548 / r6172552;
double r6172565 = r6172563 * r6172564;
double r6172566 = r6172562 ? r6172565 : r6172560;
double r6172567 = r6172558 ? r6172560 : r6172566;
double r6172568 = r6172551 ? r6172556 : r6172567;
return r6172568;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 10.9 |
|---|---|
| Target | 11.2 |
| Herbie | 7.0 |
if (* a1 a2) < -5.361684755503667e+306Initial program 60.6
rmApplied associate-/r*59.8
rmApplied div-inv59.8
rmApplied associate-*l/59.8
Simplified19.1
if -5.361684755503667e+306 < (* a1 a2) < -2.5839142907912905e-176 or 6.786326304240603e-220 < (* a1 a2) Initial program 7.7
rmApplied associate-/r*7.2
rmApplied div-inv7.3
Taylor expanded around -inf 7.7
if -2.5839142907912905e-176 < (* a1 a2) < 6.786326304240603e-220Initial program 13.8
rmApplied times-frac4.4
Final simplification7.0
herbie shell --seed 2019120
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))