\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;b1 \cdot b2 \le -3.04526068195676964 \cdot 10^{263}:\\
\;\;\;\;\frac{\frac{a1}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}} \cdot \frac{a2}{\sqrt[3]{b1}}}{b2}\\
\mathbf{elif}\;b1 \cdot b2 \le -1.87498651142310365 \cdot 10^{-123}:\\
\;\;\;\;\frac{a1}{\frac{b1 \cdot b2}{a2}}\\
\mathbf{elif}\;b1 \cdot b2 \le 2.56914 \cdot 10^{-322}:\\
\;\;\;\;\frac{a1 \cdot \frac{a2}{b1}}{b2}\\
\mathbf{elif}\;b1 \cdot b2 \le 5.5368306551194035 \cdot 10^{179}:\\
\;\;\;\;\frac{a1}{\frac{b1 \cdot b2}{a2}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{a1}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}} \cdot \frac{a2}{\sqrt[3]{b1}}}{b2}\\
\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 (((b1 * b2) <= -3.0452606819567696e+263)) {
VAR = (((a1 / (cbrt(b1) * cbrt(b1))) * (a2 / cbrt(b1))) / b2);
} else {
double VAR_1;
if (((b1 * b2) <= -1.8749865114231037e-123)) {
VAR_1 = (a1 / ((b1 * b2) / a2));
} else {
double VAR_2;
if (((b1 * b2) <= 2.5691413583745e-322)) {
VAR_2 = ((a1 * (a2 / b1)) / b2);
} else {
double VAR_3;
if (((b1 * b2) <= 5.536830655119404e+179)) {
VAR_3 = (a1 / ((b1 * b2) / a2));
} else {
VAR_3 = (((a1 / (cbrt(b1) * cbrt(b1))) * (a2 / cbrt(b1))) / b2);
}
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.3 |
|---|---|
| Target | 11.6 |
| Herbie | 5.3 |
if (* b1 b2) < -3.0452606819567696e+263 or 5.536830655119404e+179 < (* b1 b2) Initial program 16.5
rmApplied associate-/r*8.0
rmApplied add-cube-cbrt8.4
Applied times-frac3.4
if -3.0452606819567696e+263 < (* b1 b2) < -1.8749865114231037e-123 or 2.5691413583745e-322 < (* b1 b2) < 5.536830655119404e+179Initial program 4.9
rmApplied associate-/l*4.9
if -1.8749865114231037e-123 < (* b1 b2) < 2.5691413583745e-322Initial program 30.5
rmApplied associate-/r*15.7
rmApplied *-un-lft-identity15.7
Applied times-frac10.4
Simplified10.4
Final simplification5.3
herbie shell --seed 2020106 +o rules:numerics
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))