\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;\frac{a1 \cdot a2}{b1 \cdot b2} = -\infty:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -3.5370330458666065 \cdot 10^{-275}:\\
\;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\
\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -0.0:\\
\;\;\;\;a1 \cdot \frac{\frac{a2}{b1}}{b2}\\
\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 1.1837700328943485 \cdot 10^{+293}:\\
\;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\
\mathbf{else}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r5758529 = a1;
double r5758530 = a2;
double r5758531 = r5758529 * r5758530;
double r5758532 = b1;
double r5758533 = b2;
double r5758534 = r5758532 * r5758533;
double r5758535 = r5758531 / r5758534;
return r5758535;
}
double f(double a1, double a2, double b1, double b2) {
double r5758536 = a1;
double r5758537 = a2;
double r5758538 = r5758536 * r5758537;
double r5758539 = b1;
double r5758540 = b2;
double r5758541 = r5758539 * r5758540;
double r5758542 = r5758538 / r5758541;
double r5758543 = -inf.0;
bool r5758544 = r5758542 <= r5758543;
double r5758545 = r5758538 / r5758539;
double r5758546 = r5758545 / r5758540;
double r5758547 = -3.5370330458666065e-275;
bool r5758548 = r5758542 <= r5758547;
double r5758549 = -0.0;
bool r5758550 = r5758542 <= r5758549;
double r5758551 = r5758537 / r5758539;
double r5758552 = r5758551 / r5758540;
double r5758553 = r5758536 * r5758552;
double r5758554 = 1.1837700328943485e+293;
bool r5758555 = r5758542 <= r5758554;
double r5758556 = r5758536 / r5758539;
double r5758557 = r5758537 / r5758540;
double r5758558 = r5758556 * r5758557;
double r5758559 = r5758555 ? r5758542 : r5758558;
double r5758560 = r5758550 ? r5758553 : r5758559;
double r5758561 = r5758548 ? r5758542 : r5758560;
double r5758562 = r5758544 ? r5758546 : r5758561;
return r5758562;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.0 |
|---|---|
| Target | 11.1 |
| Herbie | 3.5 |
if (/ (* a1 a2) (* b1 b2)) < -inf.0Initial program 59.9
rmApplied associate-/r*30.8
if -inf.0 < (/ (* a1 a2) (* b1 b2)) < -3.5370330458666065e-275 or -0.0 < (/ (* a1 a2) (* b1 b2)) < 1.1837700328943485e+293Initial program 0.9
if -3.5370330458666065e-275 < (/ (* a1 a2) (* b1 b2)) < -0.0Initial program 13.8
rmApplied times-frac3.2
rmApplied div-inv3.2
Applied associate-*l*4.4
Simplified4.4
if 1.1837700328943485e+293 < (/ (* a1 a2) (* b1 b2)) Initial program 57.0
rmApplied times-frac7.7
Final simplification3.5
herbie shell --seed 2019164
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))