\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -5.4324090959225345 \cdot 10^{117}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le -9.7050156585541425 \cdot 10^{-179}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 6.504877116343706 \cdot 10^{-263}:\\
\;\;\;\;a1 \cdot \frac{\frac{a2}{b1}}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 4.1129654620334933 \cdot 10^{181}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\mathbf{else}:\\
\;\;\;\;a1 \cdot \frac{\frac{a2}{b1}}{b2}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r118203 = a1;
double r118204 = a2;
double r118205 = r118203 * r118204;
double r118206 = b1;
double r118207 = b2;
double r118208 = r118206 * r118207;
double r118209 = r118205 / r118208;
return r118209;
}
double f(double a1, double a2, double b1, double b2) {
double r118210 = a1;
double r118211 = a2;
double r118212 = r118210 * r118211;
double r118213 = -5.432409095922535e+117;
bool r118214 = r118212 <= r118213;
double r118215 = b1;
double r118216 = r118210 / r118215;
double r118217 = b2;
double r118218 = r118211 / r118217;
double r118219 = r118216 * r118218;
double r118220 = -9.705015658554142e-179;
bool r118221 = r118212 <= r118220;
double r118222 = r118212 / r118215;
double r118223 = r118222 / r118217;
double r118224 = 6.504877116343706e-263;
bool r118225 = r118212 <= r118224;
double r118226 = r118211 / r118215;
double r118227 = r118226 / r118217;
double r118228 = r118210 * r118227;
double r118229 = 4.112965462033493e+181;
bool r118230 = r118212 <= r118229;
double r118231 = r118230 ? r118223 : r118228;
double r118232 = r118225 ? r118228 : r118231;
double r118233 = r118221 ? r118223 : r118232;
double r118234 = r118214 ? r118219 : r118233;
return r118234;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 10.7 |
|---|---|
| Target | 10.9 |
| Herbie | 5.6 |
if (* a1 a2) < -5.432409095922535e+117Initial program 22.9
rmApplied times-frac12.4
if -5.432409095922535e+117 < (* a1 a2) < -9.705015658554142e-179 or 6.504877116343706e-263 < (* a1 a2) < 4.112965462033493e+181Initial program 3.9
rmApplied associate-/r*4.1
if -9.705015658554142e-179 < (* a1 a2) < 6.504877116343706e-263 or 4.112965462033493e+181 < (* a1 a2) Initial program 18.2
rmApplied associate-/r*18.4
rmApplied *-un-lft-identity18.4
Applied *-un-lft-identity18.4
Applied times-frac10.0
Applied times-frac5.9
Simplified5.9
Final simplification5.6
herbie shell --seed 2020034
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))