\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;b1 \cdot b2 \le -6.937968089239468 \cdot 10^{+243}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\mathbf{elif}\;b1 \cdot b2 \le -5.331249277666462 \cdot 10^{-146}:\\
\;\;\;\;\frac{a1}{\frac{b1 \cdot b2}{a2}}\\
\mathbf{elif}\;b1 \cdot b2 \le 2.1649363369639183 \cdot 10^{-186}:\\
\;\;\;\;\frac{\frac{a2}{\frac{b1}{a1}}}{b2}\\
\mathbf{elif}\;b1 \cdot b2 \le 5.6890648193479676 \cdot 10^{+48}:\\
\;\;\;\;\frac{a1}{\frac{b1 \cdot b2}{a2}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{a2}{\frac{b1}{a1}}}{b2}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r7615522 = a1;
double r7615523 = a2;
double r7615524 = r7615522 * r7615523;
double r7615525 = b1;
double r7615526 = b2;
double r7615527 = r7615525 * r7615526;
double r7615528 = r7615524 / r7615527;
return r7615528;
}
double f(double a1, double a2, double b1, double b2) {
double r7615529 = b1;
double r7615530 = b2;
double r7615531 = r7615529 * r7615530;
double r7615532 = -6.937968089239468e+243;
bool r7615533 = r7615531 <= r7615532;
double r7615534 = a1;
double r7615535 = r7615534 / r7615529;
double r7615536 = a2;
double r7615537 = r7615536 / r7615530;
double r7615538 = r7615535 * r7615537;
double r7615539 = -5.331249277666462e-146;
bool r7615540 = r7615531 <= r7615539;
double r7615541 = r7615531 / r7615536;
double r7615542 = r7615534 / r7615541;
double r7615543 = 2.1649363369639183e-186;
bool r7615544 = r7615531 <= r7615543;
double r7615545 = r7615529 / r7615534;
double r7615546 = r7615536 / r7615545;
double r7615547 = r7615546 / r7615530;
double r7615548 = 5.6890648193479676e+48;
bool r7615549 = r7615531 <= r7615548;
double r7615550 = r7615549 ? r7615542 : r7615547;
double r7615551 = r7615544 ? r7615547 : r7615550;
double r7615552 = r7615540 ? r7615542 : r7615551;
double r7615553 = r7615533 ? r7615538 : r7615552;
return r7615553;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.1 |
|---|---|
| Target | 11.4 |
| Herbie | 5.9 |
if (* b1 b2) < -6.937968089239468e+243Initial program 18.0
rmApplied times-frac3.9
if -6.937968089239468e+243 < (* b1 b2) < -5.331249277666462e-146 or 2.1649363369639183e-186 < (* b1 b2) < 5.6890648193479676e+48Initial program 4.1
rmApplied associate-/l*3.8
if -5.331249277666462e-146 < (* b1 b2) < 2.1649363369639183e-186 or 5.6890648193479676e+48 < (* b1 b2) Initial program 17.0
rmApplied associate-/r*11.8
rmApplied *-un-lft-identity11.8
Applied associate-/r*11.8
Simplified8.8
Final simplification5.9
herbie shell --seed 2019163
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))