\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -3.18542674190811771 \cdot 10^{246}:\\
\;\;\;\;a1 \cdot \frac{\frac{a2}{b2}}{b1}\\
\mathbf{elif}\;a1 \cdot a2 \le -5.34505063860751228 \cdot 10^{-269}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 0.0:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 2.8073479006144804 \cdot 10^{206}:\\
\;\;\;\;\left(a1 \cdot a2\right) \cdot \frac{\frac{1}{b1}}{b2}\\
\mathbf{else}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r148367 = a1;
double r148368 = a2;
double r148369 = r148367 * r148368;
double r148370 = b1;
double r148371 = b2;
double r148372 = r148370 * r148371;
double r148373 = r148369 / r148372;
return r148373;
}
double f(double a1, double a2, double b1, double b2) {
double r148374 = a1;
double r148375 = a2;
double r148376 = r148374 * r148375;
double r148377 = -3.1854267419081177e+246;
bool r148378 = r148376 <= r148377;
double r148379 = b2;
double r148380 = r148375 / r148379;
double r148381 = b1;
double r148382 = r148380 / r148381;
double r148383 = r148374 * r148382;
double r148384 = -5.345050638607512e-269;
bool r148385 = r148376 <= r148384;
double r148386 = r148376 / r148381;
double r148387 = r148386 / r148379;
double r148388 = 0.0;
bool r148389 = r148376 <= r148388;
double r148390 = r148374 / r148381;
double r148391 = r148390 * r148380;
double r148392 = 2.8073479006144804e+206;
bool r148393 = r148376 <= r148392;
double r148394 = 1.0;
double r148395 = r148394 / r148381;
double r148396 = r148395 / r148379;
double r148397 = r148376 * r148396;
double r148398 = r148393 ? r148397 : r148391;
double r148399 = r148389 ? r148391 : r148398;
double r148400 = r148385 ? r148387 : r148399;
double r148401 = r148378 ? r148383 : r148400;
return r148401;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 11.2 |
|---|---|
| Target | 11.5 |
| Herbie | 5.3 |
if (* a1 a2) < -3.1854267419081177e+246Initial program 44.4
rmApplied times-frac9.0
rmApplied div-inv9.1
Applied associate-*l*8.2
Simplified8.1
if -3.1854267419081177e+246 < (* a1 a2) < -5.345050638607512e-269Initial program 5.0
rmApplied associate-/r*4.9
if -5.345050638607512e-269 < (* a1 a2) < 0.0 or 2.8073479006144804e+206 < (* a1 a2) Initial program 24.0
rmApplied times-frac5.0
if 0.0 < (* a1 a2) < 2.8073479006144804e+206Initial program 5.5
rmApplied div-inv5.8
rmApplied associate-/r*5.6
Final simplification5.3
herbie shell --seed 2020025
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:precision binary64
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))