\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;b1 \cdot b2 \le -3.21552553834883066 \cdot 10^{-111}:\\
\;\;\;\;\frac{1}{\frac{b1 \cdot b2}{a1 \cdot a2}}\\
\mathbf{elif}\;b1 \cdot b2 \le 4.9910435712265866 \cdot 10^{-165}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\mathbf{elif}\;b1 \cdot b2 \le 7.34799870317304565 \cdot 10^{177}:\\
\;\;\;\;\frac{1}{\frac{b1 \cdot b2}{a1 \cdot a2}}\\
\mathbf{else}:\\
\;\;\;\;\frac{a1 \cdot \frac{a2}{b2}}{b1}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r140213 = a1;
double r140214 = a2;
double r140215 = r140213 * r140214;
double r140216 = b1;
double r140217 = b2;
double r140218 = r140216 * r140217;
double r140219 = r140215 / r140218;
return r140219;
}
double f(double a1, double a2, double b1, double b2) {
double r140220 = b1;
double r140221 = b2;
double r140222 = r140220 * r140221;
double r140223 = -3.2155255383488307e-111;
bool r140224 = r140222 <= r140223;
double r140225 = 1.0;
double r140226 = a1;
double r140227 = a2;
double r140228 = r140226 * r140227;
double r140229 = r140222 / r140228;
double r140230 = r140225 / r140229;
double r140231 = 4.991043571226587e-165;
bool r140232 = r140222 <= r140231;
double r140233 = r140226 / r140220;
double r140234 = r140227 / r140221;
double r140235 = r140233 * r140234;
double r140236 = 7.347998703173046e+177;
bool r140237 = r140222 <= r140236;
double r140238 = r140226 * r140234;
double r140239 = r140238 / r140220;
double r140240 = r140237 ? r140230 : r140239;
double r140241 = r140232 ? r140235 : r140240;
double r140242 = r140224 ? r140230 : r140241;
return r140242;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.2 |
|---|---|
| Target | 11.1 |
| Herbie | 7.4 |
if (* b1 b2) < -3.2155255383488307e-111 or 4.991043571226587e-165 < (* b1 b2) < 7.347998703173046e+177Initial program 6.5
rmApplied clear-num6.8
if -3.2155255383488307e-111 < (* b1 b2) < 4.991043571226587e-165Initial program 23.4
rmApplied times-frac11.6
if 7.347998703173046e+177 < (* b1 b2) Initial program 15.4
rmApplied times-frac4.6
rmApplied associate-*l/4.9
Final simplification7.4
herbie shell --seed 2020059 +o rules:numerics
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))