\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -8.86452261856546459 \cdot 10^{62}:\\
\;\;\;\;a1 \cdot \frac{a2}{b1 \cdot b2}\\
\mathbf{elif}\;a1 \cdot a2 \le -1.4672356117320064 \cdot 10^{-254}:\\
\;\;\;\;\frac{1}{\frac{b1}{\frac{a1 \cdot a2}{b2}}}\\
\mathbf{elif}\;a1 \cdot a2 \le 6.0955568267489453 \cdot 10^{-107}:\\
\;\;\;\;a1 \cdot \frac{a2}{b1 \cdot b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 3.3074354815251371 \cdot 10^{202}:\\
\;\;\;\;\frac{1}{\frac{b1}{\frac{a1 \cdot a2}{b2}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{a1}{b1 \cdot \frac{b2}{a2}}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r174353 = a1;
double r174354 = a2;
double r174355 = r174353 * r174354;
double r174356 = b1;
double r174357 = b2;
double r174358 = r174356 * r174357;
double r174359 = r174355 / r174358;
return r174359;
}
double f(double a1, double a2, double b1, double b2) {
double r174360 = a1;
double r174361 = a2;
double r174362 = r174360 * r174361;
double r174363 = -8.864522618565465e+62;
bool r174364 = r174362 <= r174363;
double r174365 = b1;
double r174366 = b2;
double r174367 = r174365 * r174366;
double r174368 = r174361 / r174367;
double r174369 = r174360 * r174368;
double r174370 = -1.4672356117320064e-254;
bool r174371 = r174362 <= r174370;
double r174372 = 1.0;
double r174373 = r174362 / r174366;
double r174374 = r174365 / r174373;
double r174375 = r174372 / r174374;
double r174376 = 6.095556826748945e-107;
bool r174377 = r174362 <= r174376;
double r174378 = 3.307435481525137e+202;
bool r174379 = r174362 <= r174378;
double r174380 = r174366 / r174361;
double r174381 = r174365 * r174380;
double r174382 = r174360 / r174381;
double r174383 = r174379 ? r174375 : r174382;
double r174384 = r174377 ? r174369 : r174383;
double r174385 = r174371 ? r174375 : r174384;
double r174386 = r174364 ? r174369 : r174385;
return r174386;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.1 |
|---|---|
| Target | 11.7 |
| Herbie | 7.3 |
if (* a1 a2) < -8.864522618565465e+62 or -1.4672356117320064e-254 < (* a1 a2) < 6.095556826748945e-107Initial program 14.8
rmApplied associate-/l*9.9
rmApplied div-inv10.1
Simplified9.9
if -8.864522618565465e+62 < (* a1 a2) < -1.4672356117320064e-254 or 6.095556826748945e-107 < (* a1 a2) < 3.307435481525137e+202Initial program 4.2
rmApplied clear-num4.5
rmApplied associate-/l*4.4
if 3.307435481525137e+202 < (* a1 a2) Initial program 34.1
rmApplied associate-/l*17.7
rmApplied *-un-lft-identity17.7
Applied times-frac10.1
Simplified10.1
Final simplification7.3
herbie shell --seed 2020003 +o rules:numerics
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))