\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -8.356672191202089856632868574789828922924 \cdot 10^{302}:\\
\;\;\;\;\frac{1}{\frac{b1}{a1} \cdot \frac{b2}{a2}}\\
\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -6.627043998342215562621926848971746206689 \cdot 10^{-272}:\\
\;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\
\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 0.0:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 6.467713212022452866787113437472850598121 \cdot 10^{306}:\\
\;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{b1}{a1} \cdot \frac{b2}{a2}}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r125284 = a1;
double r125285 = a2;
double r125286 = r125284 * r125285;
double r125287 = b1;
double r125288 = b2;
double r125289 = r125287 * r125288;
double r125290 = r125286 / r125289;
return r125290;
}
double f(double a1, double a2, double b1, double b2) {
double r125291 = a1;
double r125292 = a2;
double r125293 = r125291 * r125292;
double r125294 = b1;
double r125295 = b2;
double r125296 = r125294 * r125295;
double r125297 = r125293 / r125296;
double r125298 = -8.35667219120209e+302;
bool r125299 = r125297 <= r125298;
double r125300 = 1.0;
double r125301 = r125294 / r125291;
double r125302 = r125295 / r125292;
double r125303 = r125301 * r125302;
double r125304 = r125300 / r125303;
double r125305 = -6.627043998342216e-272;
bool r125306 = r125297 <= r125305;
double r125307 = 0.0;
bool r125308 = r125297 <= r125307;
double r125309 = r125291 / r125294;
double r125310 = r125292 / r125295;
double r125311 = r125309 * r125310;
double r125312 = 6.467713212022453e+306;
bool r125313 = r125297 <= r125312;
double r125314 = r125313 ? r125297 : r125304;
double r125315 = r125308 ? r125311 : r125314;
double r125316 = r125306 ? r125297 : r125315;
double r125317 = r125299 ? r125304 : r125316;
return r125317;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.5 |
|---|---|
| Target | 11.5 |
| Herbie | 2.3 |
if (/ (* a1 a2) (* b1 b2)) < -8.35667219120209e+302 or 6.467713212022453e+306 < (/ (* a1 a2) (* b1 b2)) Initial program 63.1
rmApplied clear-num63.1
rmApplied times-frac7.5
if -8.35667219120209e+302 < (/ (* a1 a2) (* b1 b2)) < -6.627043998342216e-272 or 0.0 < (/ (* a1 a2) (* b1 b2)) < 6.467713212022453e+306Initial program 3.6
rmApplied clear-num3.7
Taylor expanded around 0 3.6
if -6.627043998342216e-272 < (/ (* a1 a2) (* b1 b2)) < 0.0Initial program 12.3
rmApplied times-frac4.3
Final simplification2.3
herbie shell --seed 2019351
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))