\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 r7980834 = a1;
double r7980835 = a2;
double r7980836 = r7980834 * r7980835;
double r7980837 = b1;
double r7980838 = b2;
double r7980839 = r7980837 * r7980838;
double r7980840 = r7980836 / r7980839;
return r7980840;
}
double f(double a1, double a2, double b1, double b2) {
double r7980841 = b1;
double r7980842 = b2;
double r7980843 = r7980841 * r7980842;
double r7980844 = -6.937968089239468e+243;
bool r7980845 = r7980843 <= r7980844;
double r7980846 = a1;
double r7980847 = r7980846 / r7980841;
double r7980848 = a2;
double r7980849 = r7980848 / r7980842;
double r7980850 = r7980847 * r7980849;
double r7980851 = -5.331249277666462e-146;
bool r7980852 = r7980843 <= r7980851;
double r7980853 = r7980843 / r7980848;
double r7980854 = r7980846 / r7980853;
double r7980855 = 2.1649363369639183e-186;
bool r7980856 = r7980843 <= r7980855;
double r7980857 = r7980841 / r7980846;
double r7980858 = r7980848 / r7980857;
double r7980859 = r7980858 / r7980842;
double r7980860 = 5.6890648193479676e+48;
bool r7980861 = r7980843 <= r7980860;
double r7980862 = r7980861 ? r7980854 : r7980859;
double r7980863 = r7980856 ? r7980859 : r7980862;
double r7980864 = r7980852 ? r7980854 : r7980863;
double r7980865 = r7980845 ? r7980850 : r7980864;
return r7980865;
}




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