\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -1.059130151729121113659458114614373030793 \cdot 10^{101}:\\
\;\;\;\;\frac{a1}{\frac{1}{\frac{a2}{b2 \cdot b1}}}\\
\mathbf{elif}\;a1 \cdot a2 \le -1.370789926321058777754218050252398287174 \cdot 10^{-258}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 8.135835035457980197152821008820896199299 \cdot 10^{-234}:\\
\;\;\;\;\frac{\frac{a1}{b1}}{\frac{b2}{a2}}\\
\mathbf{elif}\;a1 \cdot a2 \le 3.246307839867652065988411443641022946156 \cdot 10^{166}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\mathbf{else}:\\
\;\;\;\;\frac{a1}{\frac{1}{\frac{a2}{b2 \cdot b1}}}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r5544389 = a1;
double r5544390 = a2;
double r5544391 = r5544389 * r5544390;
double r5544392 = b1;
double r5544393 = b2;
double r5544394 = r5544392 * r5544393;
double r5544395 = r5544391 / r5544394;
return r5544395;
}
double f(double a1, double a2, double b1, double b2) {
double r5544396 = a1;
double r5544397 = a2;
double r5544398 = r5544396 * r5544397;
double r5544399 = -1.0591301517291211e+101;
bool r5544400 = r5544398 <= r5544399;
double r5544401 = 1.0;
double r5544402 = b2;
double r5544403 = b1;
double r5544404 = r5544402 * r5544403;
double r5544405 = r5544397 / r5544404;
double r5544406 = r5544401 / r5544405;
double r5544407 = r5544396 / r5544406;
double r5544408 = -1.3707899263210588e-258;
bool r5544409 = r5544398 <= r5544408;
double r5544410 = r5544398 / r5544403;
double r5544411 = r5544410 / r5544402;
double r5544412 = 8.13583503545798e-234;
bool r5544413 = r5544398 <= r5544412;
double r5544414 = r5544396 / r5544403;
double r5544415 = r5544402 / r5544397;
double r5544416 = r5544414 / r5544415;
double r5544417 = 3.246307839867652e+166;
bool r5544418 = r5544398 <= r5544417;
double r5544419 = r5544418 ? r5544411 : r5544407;
double r5544420 = r5544413 ? r5544416 : r5544419;
double r5544421 = r5544409 ? r5544411 : r5544420;
double r5544422 = r5544400 ? r5544407 : r5544421;
return r5544422;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.5 |
|---|---|
| Target | 11.3 |
| Herbie | 6.6 |
if (* a1 a2) < -1.0591301517291211e+101 or 3.246307839867652e+166 < (* a1 a2) Initial program 25.4
rmApplied associate-/l*16.2
rmApplied clear-num16.4
if -1.0591301517291211e+101 < (* a1 a2) < -1.3707899263210588e-258 or 8.13583503545798e-234 < (* a1 a2) < 3.246307839867652e+166Initial program 4.3
rmApplied associate-/r*4.2
if -1.3707899263210588e-258 < (* a1 a2) < 8.13583503545798e-234Initial program 16.6
rmApplied associate-/l*7.1
rmApplied *-un-lft-identity7.1
Applied times-frac3.2
Applied associate-/r*3.8
Simplified3.8
Final simplification6.6
herbie shell --seed 2019169
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))