\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -2.02847831670121447 \cdot 10^{130}:\\
\;\;\;\;\frac{a2}{\frac{b1}{\frac{a1}{b2}}}\\
\mathbf{elif}\;a1 \cdot a2 \le -1.69759389374256809 \cdot 10^{-139}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 1.0020672856766477 \cdot 10^{-117}:\\
\;\;\;\;\frac{\frac{a2}{b1 \cdot b2}}{\frac{1}{a1}}\\
\mathbf{elif}\;a1 \cdot a2 \le 3.9433517635345511 \cdot 10^{207}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\mathbf{else}:\\
\;\;\;\;\frac{a2}{\frac{b1 \cdot b2}{a1}}\\
\end{array}double code(double a1, double a2, double b1, double b2) {
return ((a1 * a2) / (b1 * b2));
}
double code(double a1, double a2, double b1, double b2) {
double VAR;
if (((a1 * a2) <= -2.0284783167012145e+130)) {
VAR = (a2 / (b1 / (a1 / b2)));
} else {
double VAR_1;
if (((a1 * a2) <= -1.697593893742568e-139)) {
VAR_1 = (((a1 * a2) / b1) / b2);
} else {
double VAR_2;
if (((a1 * a2) <= 1.0020672856766477e-117)) {
VAR_2 = ((a2 / (b1 * b2)) / (1.0 / a1));
} else {
double VAR_3;
if (((a1 * a2) <= 3.943351763534551e+207)) {
VAR_3 = (((a1 * a2) / b1) / b2);
} else {
VAR_3 = (a2 / ((b1 * b2) / a1));
}
VAR_2 = VAR_3;
}
VAR_1 = VAR_2;
}
VAR = VAR_1;
}
return VAR;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.2 |
|---|---|
| Target | 11.3 |
| Herbie | 7.2 |
if (* a1 a2) < -2.0284783167012145e+130Initial program 24.5
rmApplied *-commutative24.5
Applied associate-/l*14.1
rmApplied associate-/l*13.5
if -2.0284783167012145e+130 < (* a1 a2) < -1.697593893742568e-139 or 1.0020672856766477e-117 < (* a1 a2) < 3.943351763534551e+207Initial program 3.9
rmApplied associate-/r*3.7
if -1.697593893742568e-139 < (* a1 a2) < 1.0020672856766477e-117Initial program 12.3
rmApplied *-commutative12.3
Applied associate-/l*8.3
rmApplied div-inv8.3
Applied associate-/r*8.2
if 3.943351763534551e+207 < (* a1 a2) Initial program 35.1
rmApplied *-commutative35.1
Applied associate-/l*16.0
Final simplification7.2
herbie shell --seed 2020071
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))