\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;b1 \cdot b2 \le -9.384563571355019 \cdot 10^{+255}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\mathbf{elif}\;b1 \cdot b2 \le -1.0490423713698057 \cdot 10^{-109}:\\
\;\;\;\;\frac{a1}{\frac{b1 \cdot b2}{a2}}\\
\mathbf{elif}\;b1 \cdot b2 \le 5.934410328828728 \cdot 10^{-246}:\\
\;\;\;\;\frac{a2 \cdot \frac{a1}{b1}}{b2}\\
\mathbf{elif}\;b1 \cdot b2 \le 2.6156936580694473 \cdot 10^{+78}:\\
\;\;\;\;\frac{a1}{\frac{b1 \cdot b2}{a2}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{a1}{\frac{b1}{a2}}}{b2}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r20680414 = a1;
double r20680415 = a2;
double r20680416 = r20680414 * r20680415;
double r20680417 = b1;
double r20680418 = b2;
double r20680419 = r20680417 * r20680418;
double r20680420 = r20680416 / r20680419;
return r20680420;
}
double f(double a1, double a2, double b1, double b2) {
double r20680421 = b1;
double r20680422 = b2;
double r20680423 = r20680421 * r20680422;
double r20680424 = -9.384563571355019e+255;
bool r20680425 = r20680423 <= r20680424;
double r20680426 = a1;
double r20680427 = r20680426 / r20680421;
double r20680428 = a2;
double r20680429 = r20680428 / r20680422;
double r20680430 = r20680427 * r20680429;
double r20680431 = -1.0490423713698057e-109;
bool r20680432 = r20680423 <= r20680431;
double r20680433 = r20680423 / r20680428;
double r20680434 = r20680426 / r20680433;
double r20680435 = 5.934410328828728e-246;
bool r20680436 = r20680423 <= r20680435;
double r20680437 = r20680428 * r20680427;
double r20680438 = r20680437 / r20680422;
double r20680439 = 2.6156936580694473e+78;
bool r20680440 = r20680423 <= r20680439;
double r20680441 = r20680421 / r20680428;
double r20680442 = r20680426 / r20680441;
double r20680443 = r20680442 / r20680422;
double r20680444 = r20680440 ? r20680434 : r20680443;
double r20680445 = r20680436 ? r20680438 : r20680444;
double r20680446 = r20680432 ? r20680434 : r20680445;
double r20680447 = r20680425 ? r20680430 : r20680446;
return r20680447;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.1 |
|---|---|
| Target | 11.0 |
| Herbie | 5.6 |
if (* b1 b2) < -9.384563571355019e+255Initial program 17.9
rmApplied associate-/r*8.4
rmApplied associate-/l*3.7
rmApplied *-un-lft-identity3.7
Applied associate-/r/3.7
Applied times-frac2.9
Simplified2.9
if -9.384563571355019e+255 < (* b1 b2) < -1.0490423713698057e-109 or 5.934410328828728e-246 < (* b1 b2) < 2.6156936580694473e+78Initial program 4.8
rmApplied associate-/l*4.1
if -1.0490423713698057e-109 < (* b1 b2) < 5.934410328828728e-246Initial program 25.8
rmApplied associate-/r*15.0
rmApplied associate-/l*11.0
rmApplied associate-/r/9.8
if 2.6156936580694473e+78 < (* b1 b2) Initial program 11.4
rmApplied associate-/r*8.5
rmApplied associate-/l*6.9
Final simplification5.6
herbie shell --seed 2019119
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))