\frac{a1 \cdot a2}{b1 \cdot b2}\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -5.361684755503667 \cdot 10^{+306}:\\
\;\;\;\;\frac{\frac{a1}{\frac{b2}{a2}}}{b1}\\
\mathbf{elif}\;a1 \cdot a2 \le -2.5839142907912905 \cdot 10^{-176}:\\
\;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\
\mathbf{elif}\;a1 \cdot a2 \le 6.786326304240603 \cdot 10^{-220}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\mathbf{else}:\\
\;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\
\end{array}double f(double a1, double a2, double b1, double b2) {
double r26417466 = a1;
double r26417467 = a2;
double r26417468 = r26417466 * r26417467;
double r26417469 = b1;
double r26417470 = b2;
double r26417471 = r26417469 * r26417470;
double r26417472 = r26417468 / r26417471;
return r26417472;
}
double f(double a1, double a2, double b1, double b2) {
double r26417473 = a1;
double r26417474 = a2;
double r26417475 = r26417473 * r26417474;
double r26417476 = -5.361684755503667e+306;
bool r26417477 = r26417475 <= r26417476;
double r26417478 = b2;
double r26417479 = r26417478 / r26417474;
double r26417480 = r26417473 / r26417479;
double r26417481 = b1;
double r26417482 = r26417480 / r26417481;
double r26417483 = -2.5839142907912905e-176;
bool r26417484 = r26417475 <= r26417483;
double r26417485 = r26417481 * r26417478;
double r26417486 = r26417475 / r26417485;
double r26417487 = 6.786326304240603e-220;
bool r26417488 = r26417475 <= r26417487;
double r26417489 = r26417473 / r26417481;
double r26417490 = r26417474 / r26417478;
double r26417491 = r26417489 * r26417490;
double r26417492 = r26417488 ? r26417491 : r26417486;
double r26417493 = r26417484 ? r26417486 : r26417492;
double r26417494 = r26417477 ? r26417482 : r26417493;
return r26417494;
}




Bits error versus a1




Bits error versus a2




Bits error versus b1




Bits error versus b2
Results
| Original | 10.9 |
|---|---|
| Target | 11.2 |
| Herbie | 7.0 |
if (* a1 a2) < -5.361684755503667e+306Initial program 60.6
rmApplied associate-/r*59.8
rmApplied div-inv59.8
rmApplied associate-*l/59.8
Simplified19.1
if -5.361684755503667e+306 < (* a1 a2) < -2.5839142907912905e-176 or 6.786326304240603e-220 < (* a1 a2) Initial program 7.7
rmApplied associate-/r*7.2
rmApplied div-inv7.3
Taylor expanded around 0 7.7
if -2.5839142907912905e-176 < (* a1 a2) < 6.786326304240603e-220Initial program 13.8
rmApplied times-frac4.4
Final simplification7.0
herbie shell --seed 2019120 +o rules:numerics
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))