\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -3.162408852142661 \cdot 10^{+116}:\\
\;\;\;\;\frac{a1}{\frac{b1}{\frac{a2}{b2}}}\\
\mathbf{elif}\;a1 \cdot a2 \le -2.9643938750475 \cdot 10^{-323}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 3.9503724066455816 \cdot 10^{-293}:\\
\;\;\;\;\frac{a1}{\frac{b1}{\frac{a2}{b2}}}\\
\mathbf{elif}\;a1 \cdot a2 \le 9.712692769698527 \cdot 10^{+194}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\mathbf{else}:\\
\;\;\;\;a1 \cdot \frac{\frac{a2}{b2}}{b1}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r6065529 = a1;
double r6065530 = a2;
double r6065531 = r6065529 * r6065530;
double r6065532 = b1;
double r6065533 = b2;
double r6065534 = r6065532 * r6065533;
double r6065535 = r6065531 / r6065534;
return r6065535;
}
double f(double a1, double a2, double b1, double b2) {
double r6065536 = a1;
double r6065537 = a2;
double r6065538 = r6065536 * r6065537;
double r6065539 = -3.162408852142661e+116;
bool r6065540 = r6065538 <= r6065539;
double r6065541 = b1;
double r6065542 = b2;
double r6065543 = r6065537 / r6065542;
double r6065544 = r6065541 / r6065543;
double r6065545 = r6065536 / r6065544;
double r6065546 = -2.9643938750475e-323;
bool r6065547 = r6065538 <= r6065546;
double r6065548 = r6065538 / r6065541;
double r6065549 = r6065548 / r6065542;
double r6065550 = 3.9503724066455816e-293;
bool r6065551 = r6065538 <= r6065550;
double r6065552 = 9.712692769698527e+194;
bool r6065553 = r6065538 <= r6065552;
double r6065554 = r6065543 / r6065541;
double r6065555 = r6065536 * r6065554;
double r6065556 = r6065553 ? r6065549 : r6065555;
double r6065557 = r6065551 ? r6065545 : r6065556;
double r6065558 = r6065547 ? r6065549 : r6065557;
double r6065559 = r6065540 ? r6065545 : r6065558;
return r6065559;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 10.9 |
|---|---|
| Target | 10.7 |
| Herbie | 5.1 |
if (* a1 a2) < -3.162408852142661e+116 or -2.9643938750475e-323 < (* a1 a2) < 3.9503724066455816e-293Initial program 21.4
rmApplied times-frac5.8
rmApplied associate-*l/10.2
rmApplied associate-/l*5.8
if -3.162408852142661e+116 < (* a1 a2) < -2.9643938750475e-323 or 3.9503724066455816e-293 < (* a1 a2) < 9.712692769698527e+194Initial program 4.4
rmApplied associate-/r*4.3
if 9.712692769698527e+194 < (* a1 a2) Initial program 32.7
rmApplied times-frac12.4
rmApplied div-inv12.5
Applied associate-*l*10.9
Simplified10.8
Final simplification5.1
herbie shell --seed 2019138
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))